2013-10-29 89 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