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

时间:2012-02-10 06:07:06

标签: java xml xml-parsing

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

3 个答案:

答案 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()以获取该标记的值。