0

http://puu.sh/52XYZ/6533d7013f.png

Above is the XML I am trying to parse through Java.

I am having trouble specifying the attribute of an element.

For example, the latitude and longitude is the attribute for point, correct? I am unable to specify that.

Here is what I have so far:

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();
        }
theGreenCabbage
  • 5,197
  • 19
  • 79
  • 169

1 Answers1

0

yes, they are attributes. to access is simple

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

you can also access the element using XPATH.

//data/location/point/@latitude

let us know if you need help

is what you are looking for, or I did not understand your problem?

X-Pippes
  • 1,170
  • 7
  • 25
  • Thanks - I was out for lunch - couldn't get to reply you until now. – theGreenCabbage Oct 29 '13 at 18:34
  • Hey X-Pippes. What is XPATH? Is it different from the documentalbuilder library I am currently using? – theGreenCabbage Oct 29 '13 at 18:36
  • I just tried your solution, but it appears the error persists: http://puu.sh/531zA/e0d1a66520.png Are you sure you have the right method =P? – theGreenCabbage Oct 29 '13 at 18:43
  • XPath is used to navigate through elements and attributes in an XML document. check this, maybe can help you http://stackoverflow.com/questions/2811001/how-to-read-xml-using-xpath-in-java – X-Pippes Oct 29 '13 at 18:49