2016-01-22 61 views
-1

我必須從包含單個標籤像下面的XML文檔中提取標記值:XML - 提取一個標記值

<error>Permission denied</error> 

我曾嘗試:

String xmlRecords = "<error>Permission denied</error>" 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
InputSource is = new InputSource(); 
is.setCharacterStream(new StringReader(xmlRecords)); 
Document doc = db.parse(is); 
Node nodes = doc.getFirstChild(); 
String = nodes.getNodeValue(); 

,但它不工作。 我該怎麼做?

+0

您是否嘗試過的XPath什麼? – kirsty

+0

您可以使用DOM解析器作爲將來的參考:http://www.tutorialspoint.com/java_xml/java_dom_parse_document.htm – Limit

+0

我覺得這個問題不清楚。你是否想要提取字符串'Permission denied',或其他? – DavidRR

回答

1

使用doc.getDocumentElement().getTextContent()得到字符串Permission denied

0

如果您使用上述方法,則必須構造字符串。您將使用函數獲取標籤名稱和內容的字符串值。

Tag name = nodes.getTextContent() 

tag value = nodes.getLocalName() 
0

使用DOM它知道XML文檔的結構以及要查找哪個節點級別。

獲取Document後,可以使用document.getElementsByTagName(「root」)查找根標籤或父標籤,並將子項作爲列表查找該項目。像這樣的東西:

 NodeList listresults = document.getElementsByTagName('father/root element string');   

     NodeList nl = listresults.item(0).getChildNodes();   

     // Recorremos los nodos 
     for (int temp = 0; temp < nl.getLength(); temp++) { 
      Node node = nl.item(temp); 
      // Check if it is a node 
      if (node.getNodeType() == Node.ELEMENT_NODE) { 
       Element element = (Element) node; 

       if(element.getNodeName().equals("error")){ 
        // check the element 
       }                   
      } 
     } 

我希望這可以幫助你。

0

只需嘗試下面的代碼。

String value = nodes.getTextContent(); 
0

我想這是你想要

Element element = document.getDocumentElement();  
NodeList errorTagList = element.getElementsByTagName("error"); 
if (errorTagList != null && errorTagList.getLength() > 0) { 
    NodeList errorTagSubList = errorTagList.item(0).getChildNodes(); 

    if (errorTagSubList != null && errorTagSubList.getLength() > 0) { 
    String value = errorTagSubList.item(0).getNodeValue(); 
    } 

}