# XML macht mich noch Wahnsinnig !



## Manuela (14. Okt 2007)

Hallo ich habe folgende XML Struktur 


```
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<ZEIT_PLAN>
<HALT_INFORMATION>
     <DETAIL NUMMER="343343" /> 
     <DETAIL KINDER="2" /> 
     <DETAIL FRAU="1" /> 
     <DETAIL MANN="2" /> 
</HALT_INFORMATION>
 <WEITER_INFOS>
     <DETAIL TIER="Hund" /> 
     <DETAIL HOBBY="Musik hören" /> 
      usw..
</WEITER_INFOS>
</ZEIT_PLAN>
```



Und so will ich das einlesen



```
public String[] auftrag_einlesen(String FILE){
        String[] auftrag =new String[100];
      Object[] wert = new Object[100];
        
        		try {

			//Dokument auslesen
			SAXBuilder builder = new SAXBuilder();
			Document doc = builder.build(new File(FILE));

			//Root Element
			root = doc.getRootElement();
                        
                        
   
                        
 			//Elemente auslesen
                        for(int i=0;i < 100;i++){        
                        Element neu ;
                        String temp;
                             neu =  (Element) root.getChildren().get(i);
                             temp=neu.getName().toString();
                             wert[i]=neu.getText();
               //               System.out.println("wert ="+neu.getText());
                               System.out.println("temp ="+temp+"   ="+wert[i].toString());
                        }
		} catch (Exception e) {
			  System.out.println(e);
		}
       
        return auftrag;
}
```

Die XML datei wird nicht von mir gemacht und ich kann Sie auch nicht verändern.
ich bekomme nur die Information  HALT_INFORMATION und WEITER_INFOS

wie kann ich das machen das ich auch die details angezeigt bekomme ???


Gruß Manuela


----------



## André Uhres (14. Okt 2007)

```
package xml;

/*
 * ParseXml.java
 */
import java.io.File;
import javax.xml.parsers.*;
import org.w3c.dom.*;

public class ParseXml {

    public ParseXml() {
        auftrag_einlesen("c:\\xml.xml");
    }

    public void auftrag_einlesen(String file) {
        try {
            //Dokument auslesen
            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            Document doc = builder.parse(new File(file));
            //Elemente auslesen
            NodeList nodes = doc.getDocumentElement().getChildNodes();
            for (int i = 0; i < nodes.getLength(); i++) {
                Node node = nodes.item(i);
                if (node.getNodeType() != Node.ELEMENT_NODE) {
                    continue;
                }
                System.out.println(node.getNodeName());
                NodeList nodes2 = node.getChildNodes(); 
                for (int j = 0; j < nodes2.getLength(); j++) {
                    Node node2 = nodes2.item(j);
                    if (node2.getNodeType() != Node.ELEMENT_NODE) {
                        continue;
                    }
                    NamedNodeMap map = node2.getAttributes();
                    for (int k = 0; k < map.getLength(); k++) {
                        Node node3 = map.item(k);
                        System.out.println("\t" + node2.getNodeName() + " " + node3.getNodeName() + "=" + node3.getNodeValue());
                    }
                }
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    public static void main(final String[] arg) {
        new ParseXml();
    }
}
```


----------



## Manuela (14. Okt 2007)

Hallo André ich danke dir,
das ist geanau das was ich gewolt habe.
Kuss Manuela


----------



## JayJay (15. Okt 2007)

Öhm hab das auch mal ausprobiert:


```
System.out.println( "   "+service_node.getNodeName() + " => "+service_node.getNodeValue());
```

service_node.getNodeName() liefert immer den richtigen node-namen!! Perfekt!!

Nur getNodeValue() liefert immer NULL

XML

```
<services>
	<service>
		<name value="test">Mein ServiceName</name>
...
```

PS: Attribute werden ebenfalls super angezeigt 

Hoffe es kann mir dazu jemand weiterhelfen.


----------



## JayJay (15. Okt 2007)

Okay hab die Lösung:

System.out.println( "   "+service_node.getNodeName() + " => "+service_node.getChildNodes().item(0).getNodeValue());


----------



## Murray (15. Okt 2007)

```
System.out.println( " "+service_node.getNodeName() + " => "+service_node.getTextContent());
```


----------

