在Java中读取和解析任意xml结构?

在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

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中的读取,而不是按节点名称或节点属性,而是按结构?

如果您想按节点进行读取,我认为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吗?这是最可靠的答案。谢谢