XML Dynamisch

yidaki

Erfahrenes Mitglied
Hallo zusammen, hab hier ein kleines Problem... Ich will ne XML Datei auslesen, was ja eigentlich kein problem ist, aber es soll halt so funktionieren und die Namen der Attribute explizit aufzurufen...

Code:
public static void vergleich(Document doc, Document oDoc){
	Element docElement = doc.getRootElement();
	Element oDocElement = doc.getRootElement();
                     //Liefert die Attribute.... brauche den inhalt jedes einzelnen Attributes
                     //Beispieltag 
                     //<banking-view id="0"  name="Vorgänge.SichtB"  version="1.5"  >
	List test = docElement.getAttributes();
                     ?

Ich bräuchte von den Attributen den namen und den inhalt in

mfg
 
Document docu
Element root=docu.getDocumentElement(); liefert dir als erstes das root Element

Element implementiert Node. Mit Node hast du Zugriff auf alle Kinder via: getChildNodes();

Dieses liefert eine NodeList zurück.

zusätzlich hat ein Element noch Zugriff auf seine Attribute via: getAttributes();
welches sich auch im NodeInterface befindet. Rückgabewert: NamedNodeMap.
Da hast du Zugriff auf alle Attribute des Elements via: getLength() und item(index i), sprich über eine For-Schleife kommst du an alle Attribute, egal welchen Namen sie haben.

Noch Fragen?
 
Das hört sich erstmal ziemlich gut an... werd auf jeden fall mal ausprobieren...

ich bin gerade dabei und hab mir die attribute als list zurückgeben lassen und verusche diese nun mit sublist und zwei forschleifen zu vergleichen.... ist aber warscheinlich nicht die eleganteste lösung... daher werd ich mich sobald ich fertig bin mit deinem code beschäftigen..

merci

gruß
 
Habs mir grad anschauen wollen aber kann irgendwie mit node nicht wirklich was anfangen... also
Code:
Node test = new Node()
funktioniert die implementierung jedenfalls nicht... vielleicht kannst du mir dies bezüglich doch nochmal weiterhelfen


thx
 
node ist ein Interface - interfaces kannst du nicht mit Node generieren. Du musst ein Element (welches auch ein Node ist) generieren.
 
Hi!

WIr lesen auch XML-Files aus, und haben das ca. so wie unten geschrieben verwirklicht.

doc steht dabei für ein Document-Objekt
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating (true);
DocumentBuilder db = dbf.newDocumentBuilder();
System.out.println ("is validating: " + db.isValidating());
doc = db.parse (getDoc());

Jetzt gehen wir mit einer Schleife jedes Element durch und schauen, ob es die Informationen enthält, die wir verarbeiten können. Das kann für dich so jetzt unbrauchbar sein, aber es zeigt zumindest, wie du auf einzelne Elemente nach der reihe zugreifen kannst.

for (int i = 0; i < x; i++)
{


topTemp = doc.getDocumentElement().getChildNodes().item (i).toString();

if (topTemp.startsWith ("<station>"))
{
}
if (topTemp.startsWith ("<track>"))
{
}

if (topTemp.startsWith ("<switch>"))
{

}

}

Ist vll. etwas umständlich, aber es funktioniert zumindest.

Mit Abfragen wie:

doc.getDocumentElement().getChildNodes().item (i).getChildNodes().item (1).getChildNodes().toString();

kann man nun tiefer einsteigen, wobei Variablen anstelle von Konstanten wie hier die 1 für deine Zwecke vll.besser sind... Mehrfach geschachtelte for-Schleifen, wie herrlich ;)

Hoffe dir damit weitergeholfen zu haben und nicht das Thema verfehlt zu haben.

MfG
Johnny
 
squeaker hat gesagt.:
Document docu
Element root=docu.getDocumentElement(); liefert dir als erstes das root Element
doco.getDocumentElement() gibts bei mir nicht!
Element root = doco.getRootElement() habe ich benutzt...
squeaker hat gesagt.:
Element implementiert Node. Mit Node hast du Zugriff auf alle Kinder via: getChildNodes();
Kann nicht auf nodes zugreifen
also root.getChildNodes(); fuktioniert nicht
 
JDOM 1.0 und J2SKD1.4.1_02

Code:
<banking-view id="0" name="Vorgänge.SichtA" version="1.5">
Hab mir die Attribute in einer Liste ausgeben lassen...
Code:
Element root = oDoc.getRootElement();
System.out.println(root);
List list = root.getAttributes();
ich will die attribute mit den attributen einer anderen datei vergleichen...
 
Zurück