在Java中读取和解析任意的xml结构?
问题描述:
XML解析的新手段。我需要读取一组任意XML文件。他们都应该是POX,像以下格式:在Java中读取和解析任意的xml结构?
<someThing>
<property1>blah blah blah</property1>
<property2>blah blah blah</property2>
</someThing>
或以下:
<thingList>
<items>
<otherThing>
<prop3>blah blah blah</prop3>
<prop4>blah blah blah</prop4>
</otherThing>
<otherThing>
<prop3>blah blah blah</prop3>
<prop4>blah blah blah</prop4>
</otherThing>
</items>
</thingList>
所以我不知道该元素的名称预先。我的问题是,如果有任何Java库在XML中处理读取,而不是通过节点的名称或节点的属性,而是通过结构?
答
使用getRootElement方法可以获取xml文件的根元素。获取根元素后,必须指定要获取的元素的xml路径。我已经使用这个为“items/otherThing/prop3”写了,你会得到你的prop3标签值。
File fXmlFile = new File("test.xml");
SAXBuilder builder = new SAXBuilder();
Document document = builder.build(fXmlFile);
Element beans = document.getRootElement();
Element dbUrlElementHost = (Element) XPath.selectSingleNode(beans,"items/otherThing/prop3");
dbUrlElementUsername.getValue()+"";
+0
这是最健壮的答案。谢谢。 – Slamice 2012-02-11 17:03:47
答
您可以使用getChildNodes()
来获取整个节点列表,以visitNode()
这样的方法递归地调用它。该API可在org.w3c.dom包中找到。
首先调用文档的根节点的getChildNodes()
通过我提到然后visitNode()
内再次调用visitNode()
每个在当前节点的子节点的visitNode()
方法。
您可以通过getNodeType()
检查类型,如果它是Node.TEXT_NODE
访问getNodeValue()
以获取该标记的值。
你是什么意思的结构?你有没有试过SAX或DOM? – Adrian 2012-02-10 06:09:26