0

我有一个通过 DOM 解析器解析的 xml。xml有点这个顺序

 <root>
   <item1> abc </item1>
   <item2> def </item2>
   <item3> ghi </item3>
   <item4>
        <subItem4>
              <name> xyz </name>
              <id>   1  </id>
        </subItem4>
        <subItem4>
              <name> asd </name>
              <id>   2  </id>
        </subItem4>
   </item4>
</root>

根据这个虚拟 xml,我到达子项 4,但没有到达它的子项。我正在尝试如下获得最里面的项目是:

节点列表幻灯片 = theElement.getElementsByTagName("item4").item(0).getChildNodes();

        for(int i = 0; i<slide.getLength(); i++)
        {
            NodeList subSlides = theElement.getElementsByTagName("subItem4").item(0).getChildNodes();

                for (int j=0; j<subSlides.getLength(); j++)
                {
                    String subSlide_title   = subSlides.item(i).getFirstChild().getNodeValue();             

                }
        }

它不工作。请有人可以确定我在哪里做错解析。任何帮助表示赞赏。

4

3 回答 3

1
NodeList nodes = doc.getElementsByTagName("item");
 for (int i = 0; i < nodes.getLength(); i++) {
     Element element = (Element) nodes.item(i);
     NodeList nodesimg = element.getElementsByTagName("name");
     for (int j = 0; j < nodesimg.getLength(); j++) {
        Element line = (Element) nodesimg.item(j);
        String value=getCharacterDataFromElement(line);
     }
}
public static String getCharacterDataFromElement(Element e) {
  Node child = e.getFirstChild();
  if (child instanceof CharacterData) {
     CharacterData cd = (CharacterData) child;
     return cd.getData();
  }
  return "?";
}

我认为上面的代码将帮助您解析 xml 文件。

于 2011-07-08T13:52:50.853 回答
1

您没有使用有效的 XML - 标签名称中不能有空格。

XML 名称不能包含空格,请参阅此处了解有效值。


更新(在发布的示例代表实际 XML 的评论之后):

您通过节点列表的索引器进行的访问不正确:

String subSlide_title = subSlides.item(i).getFirstChild().getNodeValue();

试试这个(使用j代替i,因为内部循环变量被调用):

String subSlide_title = subSlides.item(j).getFirstChild().getNodeValue();
于 2011-07-08T13:41:04.653 回答
1

XML 元素都搞砸了。从字面上看,有两行没有错误。

例如

<subItem 4> 

在语法上是错误的,我看不出你能从中得出什么逻辑意义。

你的意思是

<subItem4> 

如第四个子项或

<subItem someAttribute="4">

我建议学习 XML,它非常简单... http://www.w3schools.com/xml/default.asp

于 2011-07-08T15:07:58.750 回答