Mercurial > hg > Members > tatsuki > JungleXMLReader
view src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/xmlReadTest/SaxTest.java @ 41:037731e99d6e
fit JungleCore 144
author | one |
---|---|
date | Mon, 17 Nov 2014 18:47:10 +0900 |
parents | 6f9439ca3eb5 |
children | 1bdd50e26fac |
line wrap: on
line source
package jp.ac.u_ryukyu.cr.ie.tatsuki.xmlReadTest; import java.io.*; import java.nio.ByteBuffer; import java.util.Iterator; import javax.xml.parsers.*; import fj.data.List; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; import junit.framework.Assert; class SaxTest { public static void main(String args[]) { try { SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); SAXParser saxParser = saxParserFactory.newSAXParser(); Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser())); JungleTree tree = jungle.createNewTree("XMLTEST"); TestHandler testHandler = new TestHandler(tree); saxParser.parse(new FileInputStream("xml/sample.xml"), testHandler); JungleTree newTree = testHandler.getTree(); InterfaceTraverser ifTraverser = newTree.getTraverser(); Iterator<Pair<TreeNode, NodePath>> searchNode = ifTraverser.find((TreeNode node) -> { List<ByteBuffer> attribute = node.getAttributes().get("element"); if (attribute.isNotEmpty()) { byte[] byteAttribute = attribute.head().array(); String str = new String(byteAttribute); System.out.println("attribute = " + str); return str.equals("Person"); } return false; }, "element", "Person"); Pair<TreeNode, NodePath> nodePair = searchNode.next(); Iterator<String> element = nodePair.left().getAttributes().getString("element"); Assert.assertTrue(element.hasNext()); Assert.assertEquals(element.next(), "Person"); Assert.assertEquals(nodePair.right().toString(), "<-1,0>"); searchNode = ifTraverser.find((TreeNode node) -> { List<ByteBuffer> attribute = node.getAttributes().get("element"); if (attribute.isNotEmpty()) { byte[] byteAttribute = attribute.head().array(); String str = new String(byteAttribute); System.out.println("attribute = " + str); return str.equals("name"); } return false; }, "element", "name"); searchNode.hasNext(); nodePair = searchNode.next(); Iterator<String> textIterator = nodePair.left().getAttributes().getString("text"); Assert.assertTrue(textIterator.hasNext()); Assert.assertEquals(textIterator.next(), "tatsuki"); Assert.assertEquals(nodePair.right().toString(), "<-1,0,0>"); searchNode = ifTraverser.find((TreeNode node) -> { List<ByteBuffer> attribute = node.getAttributes().get("text"); if (attribute.isNotEmpty()) { byte[] byteAttribute = attribute.head().array(); String str = new String(byteAttribute); System.out.println("attribute = " + str); return str.equals("tatsuki"); } return false; }, "text", "tatsuki"); nodePair = searchNode.next(); Iterator<String> idIterator = nodePair.left().getAttributes().getString("id"); Assert.assertTrue(idIterator.hasNext()); Assert.assertEquals(idIterator.next(), "10"); Assert.assertEquals(nodePair.right().toString(), "<-1,0,0>"); searchNode = ifTraverser.find((TreeNode node) -> { List<ByteBuffer> attribute = node.getAttributes().get("id"); if (attribute.isNotEmpty()) { byte[] byteAttribute = attribute.head().array(); String str = new String(byteAttribute); System.out.println("attribute = " + str); return str.equals("10"); } return false; }, "id", "10"); nodePair = searchNode.next(); idIterator = nodePair.left().getAttributes().getString("id"); Assert.assertTrue(idIterator.hasNext()); Assert.assertEquals(idIterator.next(), "10"); Assert.assertEquals(nodePair.right().toString(), "<-1,0,0>"); } catch (Exception e) { e.printStackTrace(); } } }