2013-10-29 133 views
0

http://puu.sh/52XYZ/6533d7013f.pngJava XML指定屬性與元素

以上是我試圖通過Java解析的XML。

我無法指定元素的屬性。

例如,latitudelongitudepoint的屬性,是否正確?我無法指定。

這是我到目前爲止有:

try { 
      File newXMLFile = new File("H:\\520\\SOAP Data Acquisition\\testNOAA.xml"); 
      DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
      Document doc = dBuilder.parse(newXMLFile); 

      doc.getDocumentElement().normalize(); 

      System.out.println("Title: " + doc.getElementsByTagName("title").item(0).getTextContent()); 
      System.out.println("Field: " + doc.getElementsByTagName("field").item(0).getTextContent()); 
      System.out.println("category: " + doc.getElementsByTagName("category").item(0).getTextContent()); 
      System.out.println("Date Created: " + doc.getElementsByTagName("creation-date").item(0).getTextContent()); 

      NodeList nList = doc.getElementsByTagName("data"); 

      for(int i = 0; i < nList.getLength(); i++){ 
       Node nNode = nList.item(i); 
       System.out.println("\nCurrent Element: " + nNode.getNodeName()); 
       if(nNode.getNodeType() == Node.ELEMENT_NODE){ 
        Element eElement = (Element) nNode; 

        // System.out.println("Location: " + eElement.getElementsByTagName("location").getElementsByTagName("point").getAttribute("latitude")); 

        System.out.println("Time: " + eElement.getElementsByTagName("time-layout").item(0).getTextContent()); // get first child 
        System.out.println("Start Time: " + eElement.getElementsByTagName("start-valid-time").item(0).getTextContent()); 
        System.out.println("End Time: " + eElement.getElementsByTagName("end-valid-time").item(0).getTextContent()); 

        System.out.println("Type: "+eElement.getAttribute("")); 
        System.out.println(eElement.getElementsByTagName("name").item(0).getTextContent() + ": " + eElement.getElementsByTagName("value").item(0).getTextContent()); 
        System.out.println(eElement.getElementsByTagName("name").item(1).getTextContent() + ": " + eElement.getElementsByTagName("value").item(1).getTextContent()); 
       } 
      } 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 

回答

0

是的,他們的屬性。訪問很簡單

String latitude = eElement.getElementsByTagName("point").item(0).getAttributes().getNamedItem("latitude").toString(); 

您還可以使用XPATH訪問該元素。

//data/location/point/@latitude 

讓我們知道,如果你需要幫助

是你在找什麼,或者我不明白你的問題?

+0

謝謝 - 我出去吃午飯 - 直到現在纔回復你。 – theGreenCabbage

+0

嗨X-Pippes。什麼是XPATH?它與我目前使用的文檔構建器庫不同嗎? – theGreenCabbage

+0

我剛剛嘗試過您的解決方案,但似乎錯誤仍然存​​在:http://puu.sh/531zA/e0d1a66520.png您確定您擁有正確的方法= P嗎? – theGreenCabbage