簡體   English   中英

從XML元素讀取屬性

[英]Reading attributes from XML elements

我正在嘗試使用下面發布的Java代碼顯示“ x”的值,但是什么也不顯示。 請讓我知道我的錯誤在哪里:

Java代碼:

for (int temp = 0; temp < nList.getLength(); temp++) {
  Node nNode = nList.item(temp);
  System.out.println("\nCurrent Element :" + nNode.getNodeName());
  System.out.println("\n"+nList.getLength());
  if (nNode.getNodeType() == Node.ELEMENT_NODE) {
    Element eElement = (Element) nNode;
    if(eElement.getAttribute("place") != null){
      System.out.println("x: " + eElement.getElementsByTagName("place").item(0).getTextContent());    
    }
  }
}

XML檔案:

<?xml version="1.0" encoding="UTF-8"?>
<document>  
<group id="Fontanestra">
<place  x="4222873.962227057"   y="2902240.7064015563"  class="hdlamp lamp651   
Fontanestra"/>
<place  x="4222675.856667058"   y="2902341.1436763224"  class="hdlamp lamp745 
Fontanestra"/>
<place  x="4222761.571650493"   y="2902285.145924819"   class="hdlamp lamp871 
Fontanestra"/>
<place  x="4222703.30618614"    y="2902320.7303823503"  class="hdlamp lamp972 
Fontanestra"/>
<place  x="4222802.65477977"    y="2902265.5807657656"  class="hdlamp lamp1084 
Fontanestra"/>
<place  x="4222935.246730494"   y="2902220.7360558496"  class="hdlamp lamp1110  
Fontanestra"/>
<place  x="4222734.639113373"   y="2902300.2547685634"  class="hdlamp lamp1215 
Fontanestra"/>
<place  x="4222837.368032"      y="2902252.747460649"   class="hdlamp  
lamp1225 Fontanestra"/>
<place  x="4222904.859771981"   y="2902230.8135758354"  class="hdlamp lamp1336  
Fontanestra"/>

</group>        
</document>
  if(eElement.getAttribute("place") != null){

據我了解的XML,“地方”不是一個屬性

if (nNode.getNodeType() == Node.ELEMENT_NODE) {
   Element eElement = (Element) nNode;
   if ("place".equalsIgnoreCase(eElement.getTagName())){
      System.out.println("x: " +     eElement.getAttribute("x"));    
   }
}

查看您的代碼,我認為nList是通過調用獲得的:

NodeList nList = someDocument.getElementsByTagName("group");

因此,您將需要調整循環結構,並按名稱搜索而不是查找屬性:

for (int i = 0; i < nList.getLength(); i++) {
  Node groupNode = nList.item(i);

  NodeList placeList = groupNode.getChildNodes();

  for (int j = 0; j < placeList.getLength(); j++) {
    Node placeNode = placeList.item(j);

    if (placeNode instanceof Element) {
      Element element = (Element) placeNode;

      if ("place".equalsIgnoreCase(element.getTagName())) {
        System.out.println("x: " + element.getAttribute("x"));
      }
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM