2017-05-25 117 views
0

我有如下的XML结构:解析XML文档获取节点值

String attributesXML="<entry> 
      <value> 
       <List> 
       <String>Rob</String> 
       <String>Mark</String> 
       <String>Peter</String> 
       <String>John</String> 
      </List> 
      </value> 
     </entry>" 

我想获取值罗布,马克,彼得,约翰。我可以从入口节点(下面的代码)开始获取节点。问题是我不知道什么是入口节点下的子节点名称。从入口节点开始,我需要继续钻取直到找到值。我写了一个方法getChildNodeValue(),但它不给我所需的输出。它确实打印了我需要的内容,但它也打印了一些额外的内容。我需要从这个方法getChildNodeValue()返回值作为csv。

获取入口节点:

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
        InputSource is = new InputSource(); 
        is.setCharacterStream(new StringReader(attributesXML)); 

        Document doc = db.parse(is); 
        NodeList nodes = doc.getElementsByTagName("entry"); 
for (int i = 0; i < nodes.getLength(); i++) { 

       if(nodes.item(i).hasChildNodes()){ 

        getChildNodeValue(nodes.item(i)); 

       } 
} 


public static void getChildNodeValue(Node node) { 

    System.out.println("Start Node: "+node.getNodeName()); 

    NodeList nodeList = node.getChildNodes(); 
    for (int i = 0; i < nodeList.getLength(); i++) { 
     Node currentNode = nodeList.item(i); 

     while(currentNode.hasChildNodes()){ 

      System.out.println("Current Node: "+currentNode.getNodeName()); 

      nodeList = currentNode.getChildNodes(); 

      for(int j=0;j<nodeList.getLength();j++){ 

       currentNode = nodeList.item(j); 
       System.out.println("Node name: "+currentNode.getNodeName()); 
       System.out.println("Node value: "+currentNode.getTextContent()); 

      } 

     } 

    } 
} 
+0

请花更多的精力来格式化您的代码。这一切都在这个地方,使它很难阅读。在发布之前,请务必仔细阅读预览,并询问是否您希望看到的帖子*是否尝试找到需要回答的问题。 –

+0

@Jon,我会格式化它。谢谢... –

回答