解析xml文件时出现问题

时间:2011-06-21 04:28:28

标签: java xml parsing

我使用以下代码获取xml中特定标记的值:

DocumentBuilderFactory docBuilderFactory  =  DocumentBuilderFactory.newInstance();
Document doc = null;
DocumentBuilder docbuilder = docBuilderFactory.newDocumentBuilder();
doc = docbuilder.parse(jobFilePath);
NodeList nodeList = doc.getElementsByTagName("xyz");
System.out.println("nodelist Lengthhhhhhhhhh = " + nodeList.getLength());

for (int i=0;i<nodeList.getLength();i++) {
    Node c= nodeList.item(i);
    System.out.println("val =" + c.getNodeValue());
}

输入xml是

<abc> 
        <xyz p="Layouts">a</xyz>
        <xyz p="Layouts">b</xyz>
        <xyz p="Layouts">3</xyz>
</abc>

输出

nodelist Lengthhhhhhhhhh 3
val = null
val = null
val = null

为什么它会出现空?

4 个答案:

答案 0 :(得分:2)

在这里走出困境...但是从我在Javascript中对DOM操作的记忆中,你需要使用:

 Node c= nodeList.item(i).getFirstChild();

由于firstChild包含标签本身的实际值。

答案 1 :(得分:1)

尝试更改此内容:

System.out.println("val =" + c.getNodeValue());

成:

System.out.println("val =" + c.getTextContent());

答案 2 :(得分:1)

与其他人一样,getTextContent()将为您提供xyz元素的Text节点的内容。

getNodeValue()中指定了您要求Node c= nodeList.item(i);这种行为的实际原因:

  

属性nodeName,nodeValue和   属性包含在一个机制中   无需获取节点信息   铸造到特定的派生   接口。在没有的情况下   这些属性的明显映射   对于特定的nodeType(例如,   元素或属性的nodeValue   对于评论),返回null

执行第c行时,节点xyz包含一个Element类型的对象(nodeName = null,nodeValue = xyz)。这些a元素的子文本节点实际上包含值b3getTextContent()。方法getNodeValue()返回给定元素的文本节点的值,其中{{1}}只返回适用于特定节点的nodeValue属性。

DOM Level 2 Core API还为Document中的其他类型的节点指定了这些值。请注意,文本节点的nodeValue恰好是节点的内容。

答案 3 :(得分:0)

也许你应该试试这个:

c.getTextContent()