2012-11-02 276 views
4

我知道如何分析與DOM的XML文檔時,他們在形式:獲取XML節點的值

<tagname> valueIWant </tagname> 

不過,現在我試圖讓該元素是不是在形式

<photo farm="9" id="8147664661" isfamily="0" isfriend="0" ispublic="1" 
     owner="[email protected]" secret="4902a217af" server="8192" title="Rainbow"/> 

我通常使用cel.getTextContent()來返回值,但在這種情況下不起作用。 cel.getAttributes(),我認爲會工作...

理想情況下,我需要只是得到id和所有者的數值。但是,如果有人能夠幫助解決所有問題,那麼我可以處理刪除我以後不想要的部分。

+0

這不是任何特定語言的必需的有效格式,但它反映了xml通常傾向於如何結構化[string nine = doc.attributes [「farm」]' –

回答

1

您想要檢索的是使用元素附加的不同屬性的值。看看使用getAttribute(String name)方法來實現這一

如果你想檢索所有的屬性,你可以這樣做使用getAttributes()並遍歷它。這兩種方法的一個例子可能是這樣的:

private void getData(Document document){ 
    if(document == null) 
     return; 

    NodeList list = document.getElementsByTagName("photo"); 
    Element photoElement = null; 

    if(list.getLength() > 0){ 
     photoElement = (Element) list.item(0); 
    } 

    if(photoElement != null){ 
     System.out.println("ID: "+photoElement.getAttribute("id")); 
     System.out.println("Owner: "+photoElement.getAttribute("owner")); 

     NamedNodeMap childList = photoElement.getAttributes(); 
     Attr attribute; 

     for(int index = 0; index < childList.getLength(); index++){ 
      if(childList.item(index).getNodeType() == Node.ATTRIBUTE_NODE){ 
       attribute = ((Attr)childList.item(index)); 
       System.out.println(attribute.getNodeName()+" : "+attribute.getNodeValue()); 
      }else{ 
       System.out.println(childList.item(index).getNodeType()); 
      } 
     } 
    } 
} 
+0

輝煌,工作過的魅力。謝謝! – user1766153

+0

@ user1766153:很高興爲您提供幫助。我更新了我的答案,爲您提供瞭如何同時檢索特定屬性或所有屬性的示例。希望這有助於以及:) – Sujay

0

喜歡的東西:

Element photo = (Element)yournode; 
photo.getAttribute("farm"); 

將讓你的農場屬性的值。您需要將您的節點視爲元素才能訪問這些屬性(doc)。