<pets>
<dogs>
<dog id="1">
<name>YAYA</name>
<health>100</health>
<love>0</love>
<strain>酷酷的雪娜瑞</strain>
要显示的文本
</dog>
<dog id="2">
<name>MEIMEI</name>
<health>95</health>
<love>10</love>
<strain>泰迪</strain>
</dog>
</dogs>
<penguins>
<penguin id="1">
<name>QQ</name>
<health>100</health>
<love>20</love>
<sex>Q仔</sex>
</penguin>
</penguins>
</pets>
代码如上,假如 node 是<dog id="1"> 的子节点<name>的节点对象 node.getNodeName()的值为name 我要获取<name>标签中的YAYA文本 为什么还要访问到该节点的子节点获取(node.getFirstChild().getNodeValue())才能获取?<name>节点不已经是最后的节点了么?
那如果我要获取<dog id="1"> 中的那个 “要显示的文本”  该怎么做?javaxml

解决方案 »

  1.   

    node好像有个 asText的方法吧
      

  2.   

    dom4j解析这段xml的片段,希望对你有帮助public void obtainText(Document doc) throws DocumentException {
    Element root = Dom4jHelper.getRootElement(doc);
    Node dogNode = root.selectSingleNode("dogs/dog[@id='1']");
    Element dogElement = (Element)dogNode;
    List lst = dogElement.content();

    for (int i=0;i<lst.size(); i++) {
    if (lst.get(i) instanceof Text) {
    Text ele = (Text)lst.get(i);
    System.out.println("i:" + i + ",text:" + ele.getText());
    }
    }

    }

    public static void main(String[] args) throws DocumentException {
    Document doc = Dom4jHelper.readFile("src/main/java/zglv/demo/xml/pets.xml");

    new HandlerPets().obtainText(doc);
    }