XML Verständnisproblem?

Übergeordnete Themen zum gesamten Paket passend
Antworten
satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

XML Verständnisproblem?

Beitrag von satmax »

Hallo,
ich möchte ein XML-Respond auswerten und komme nicht wirklich weiter. Hier der XML-Inhalt den ich erhalte (gekürzt!):

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <ns2:renderMapResponse xmlns:ns2="http://xmap.xs.gr.com">
      <return image="iVBORw…“
        <bounds minX="6.0628899158" maxX="6.3027724922" minY="49.481637933" maxY="49.598399762"/>
      </return>
    </ns2:renderMapResponse>
  </soap:Body>
</soap:Envelope>
Damit möchte ich den Wert von "image" auslesen:

Code: Alles auswählen

bRes is boolean
MyDoc is string = fLoadText("C:\Temp\XMap-renderMap-response.xml")
bRes=XMLDocument("xmldoc1", MyDoc)
IF bRes THEN
// Versuche hier alle möglichen Varianten....
	sImage is string = XMLRead("xmldoc1","soap:Body[1]/ns2:renderMapResponse[1]/return[1]/@image") // soap:Envelope
	sImage = XMLRead("xmldoc1","soap:Body") // soap:Envelope
	sImage = XMLRead("xmldoc1","return[1]/@image") // soap:Envelope
	sImage = XMLRead("xmldoc1","return/@image") // soap:Envelope
	sImage = XMLRead("xmldoc1","soap:Body/ns2:renderMapResponse/return/@image","ERROR")
	sImage = XMLRead("xmldoc1","soap:Body[1]/ns2:renderMapResponse[1]/return[1]/@image","ERROR") // soap:Envelope
	sImage = XMLRead("xmldoc1","soap:Body/ns2:renderMapResponse/return/@image","ERROR") // soap:Envelope
END

sImage ist aber immer leer bzw. beinhaltet "ERROR". Was mache ich hier falsch?

Gruß
Markus

Herbert
Site Admin
Beiträge: 529
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Kontaktdaten:

Re: XML Verständnisproblem?

Beitrag von Herbert »

Das einfachste ist, über die XSD-Datei zu gehen. Da hast du gleich noch die Regeln mit dabei und die Strukturen sind komplett bekannt.

Code: Alles auswählen

sXMLELr1 is xmlDocument <description="eCH-0090-1-0">    // dieses xml ist im Projekt eingelesen worden
sBuf is string

sXMLELr1=XMLOpen(spath+sbuf,fromFile)
sbuf=sXMLELr1.envelope.messageType    // ist direkt so bekannt, wie alle anderen Elemente auch. 
            //Musst einfach den Datentyp der jeweiligen Variablen kennen

satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

Re: XML Verständnisproblem?

Beitrag von satmax »

Ok, diese Methode funktioniert und ist wahrscheinlich auch besser, danke Herbert. Trotzdem würde ich gerne wissen, was bei meinem Ansatz falsch ist.

Herbert
Site Admin
Beiträge: 529
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Kontaktdaten:

Re: XML Verständnisproblem?

Beitrag von Herbert »

Da kann ich nur raten. Er findet das Element nicht.
- Gross- Kleinschreibung exakt?
- Root-Element vorhanden? Falls nein mit "/" beginnen
mehr steht in der Hilfe, die du dir sicher angesehen hast. https://doc.windev.com/en-US/?1000017030&name=XMLRead

was passiert bei:

Code: Alles auswählen

sImage = XMLRead("xmldoc1","Envelope/Body/renderMapResponse.return/@image")
oder ersetze mal die "/" mit ".", also wie die Verwendung der Variablen gemäss meinem Beispiel

satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

Re: XML Verständnisproblem?

Beitrag von satmax »

Ja, da sollte alles passen, habe ja alle Varianten durchprobiert. Wenn er etwas nicht findet wird es im debugger sogar markiert....

Herbert
Site Admin
Beiträge: 529
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Kontaktdaten:

Re: XML Verständnisproblem?

Beitrag von Herbert »

Nein. Lass mal die Präfixes weg...

Antworten