XML解析新手。我需要读取一组任意XML文件。它们都应该是POX,如下所示:
<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读取而不是节点名称或节点属性,而是按结构?
答案 0 :(得分:1)
使用getRootElement方法,您可以获取xml文件的根元素。获取根元素后,您必须指定要获取的元素的xml路径。我用“this / 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()+"";
答案 1 :(得分:0)
我认为DOM是最好的选择,如果你想通过Node。您可以遍历每个节点及其子节点列表。获得一个想法是个好example 。
答案 2 :(得分:0)
您可以使用getChildNodes()
获取整个节点列表,以visitNode()
之类的方法递归调用。此API可在org.w3c.dom包中找到。
首先,通过我提到的getChildNodes()
方法调用文档根节点上的visitNode()
,然后在visitNode()
内再次调用每个子节点上的visitNode()
在当前节点中。
您可以按getNodeType()
检查类型,如果Node.TEXT_NODE
访问getNodeValue()
以获取该标记的值。