[GELÖST] XML (per DOMParser) per "nodeName" auslesen

Diskutiere [GELÖST] XML (per DOMParser) per "nodeName" auslesen im HTML Forum im Bereich Programmierung; Moin, ich habe eine XML nach dem Schema: <?xml version="1.0" encoding="UTF-8"?> <data> <script/> <post> <ID>000</ID>...
E

echdeneth

Member
Beiträge
5
Punkte Reaktionen
0
Moin,

ich habe eine XML nach dem Schema:

XML:
<?xml version="1.0" encoding="UTF-8"?>
<data>
    <script/>
    <post>
        <ID>000</ID>
        <Title>Blabla</Title>
    </post>
    <post>
        <ID>001</ID>
        <Title>Blablabla</Title>
    </post>
</data>

Diese lese ich mit:

Javascript:
fetch('XML/xmldatei.xml').then((response) => {
    response.text().then((xml) => {
        xmlContent = xml;
        let parser = new DOMParser();
        let xmlDOM = parser.parseFromString(xmlContent, 'application/xml');
        let items = xmlDOM.querySelectorAll('post')
        items.forEach(eintrag => {
            let bla0 = eintrag.children[0].innerHTML;
        });
    });
});

Nun möchte ich den Value in post anhand des nodeName auslesen, dies gelang mir bislang nur mit children[0].innerHTML;.
Ich habe alles ausprobiert was mir eingefallen ist. Kann ich überhaupt anhand des nodeName auslesen?

Danke.
 
S

Sempervivum

Well-known member
Beiträge
274
Punkte Reaktionen
42
Ich nehme an, Du möchtest den Wert der ID auslesen? In dem Fall kannst Du querySelector verwenden:
Code:
        let items = xmlDOM.querySelectorAll('post');
        items.forEach(eintrag => {
            let bla0 = eintrag.querySelector('ID').innerHTML;
        });
 
E

echdeneth

Member
Beiträge
5
Punkte Reaktionen
0
Ich nehme an, Du möchtest den Wert der ID auslesen? In dem Fall kannst Du querySelector verwenden:

Im Prinzip, Ja
Den Wert der ID anhand des Namens "ID", da ich nocht 100%ig sicher sein kann das alle Einträge diesselbe Anoprdnung und Anzahl haben.
getestet und: TypeError: eintrag.children.querySelector is not a function
 
S

Sempervivum

Well-known member
Beiträge
274
Punkte Reaktionen
42
Warum "children"?
eintrag.querySelector('ID').innerHTML
So hatte ich es getestet und es funktionierte.
 
E

echdeneth

Member
Beiträge
5
Punkte Reaktionen
0
"Funktioniert" bei mir auch in dem Sinne als das es keinen Fehler erzeugt, nur ist der Wert den ich bekomme "undefined"
items enthält alle <post> Einträge, die auf die ich es abgesehen habe sind darin als children-Node angegeben und diese ist eine HTMLCollection.
Die Werte darin lassen sich ja easy mit dem Index auslesen, halt nur nicht mit dem nodeName.
Und durch alle Einträge iterieren/foreachen wollt ich jetzt auch nicht....
 
S

Sempervivum

Well-known member
Beiträge
274
Punkte Reaktionen
42
Verstehe, Du möchtest vermeiden, es mit dem Index auszulesen und die Gründe dafür sind einleuchtend.
Ich hatte es mit dem Debugger getestet, allerdings nicht mit Ajax sondern mit einer Stringkonstanten, und es hatte funktioniert auch in dem Sinne, dass der Wert bzw. das innerHTML in die Variable bla0 gelangte.
Hier mein Testscript bei jsfiddle:
https://jsfiddle.net/Sempervivum/b8zon5w1/1/
 
E

echdeneth

Member
Beiträge
5
Punkte Reaktionen
0
Problem gelöst, etwas umständlich vllt. aber gelöst in dem ich noch einmal durch die
children iteriere und den nodeName abgreife:
Javascript:
for (let i = 0; i < eintrag.children.length; i++) {
                    switch (eintrag.children[i].nodeName) {
                        case 'ID':
                            id = eintrag.children[i].innerHTML;
                            break;
                        case 'Name':
                            name = eintrag.children[i].innerHTML;
                            break;
                        case 'Etc':
                            //u.s.w....
 
Thema:

[GELÖST] XML (per DOMParser) per "nodeName" auslesen

Oben Unten