在Java中读取和解析任意xml结构?
XML解析新手。我需要读取一组任意XML文件。它们都应该是POX,如以下格式:在Java中读取和解析任意xml结构?,java,xml,xml-parsing,Java,Xml,Xml Parsing,XML解析新手。我需要读取一组任意XML文件。它们都应该是POX,如以下格式: <someThing> <property1>blah blah blah</property1> <property2>blah blah blah</property2> </someThing> 废话废话 废话废话 或以下各项: <thingList> <items> <otherTh
<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中的读取,而不是按节点名称或节点属性,而是按结构?如果您想按节点进行读取,我认为DOM是最好的选择。您可以遍历每个节点及其子节点列表。这里有一个好主意。您可以使用
getChildNodes()
来获取整个节点列表,用类似visitNode()的方法递归调用它。此API在org.w3c.dom包中提供
首先,通过我提到的visitNode()
方法在文档的根节点上调用getChildNodes()
,然后在visitNode()
中,再次在当前节点的每个子节点上调用visitNode()
您可以通过getNodeType()
检查类型,如果它是节点。TEXT\u Node
访问getNodeValue()
以获取该标记的值。使用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()+"";
你说的结构是什么意思?您尝试过SAX或DOM吗?这是最可靠的答案。谢谢