![]() |
XML Parse Error - XPath Fehler bei verschachtelter Struktur
Hallo Leute,
und wieder benötige ich Hilfe: Ich will folgende Art von XML File auslesen:
XML-Code:
Ich weiß nicht wie ich configuration tags komplett auslese.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config SYSTEM "config-1_0.dtd"> <config> <client> <configuration name="name" ds-name="ProjectDB" service-url="local" lfs-cache-path="d:\lfs" lfs-config-name="Configname" /> <configuration name="name2" ds-name="ProjectDB2" service-url="local" lfs-cache-path="d:\lfs" lfs-config-name="Configname" /> </client> ... Brauche name, ds-name, service-url, etc. Wenn ich jedoch versuche es auszulesen erklärt mich BDS für verückt, weil das Start Tag da is, aber ein End Tag fehlt. (nicht passend ...) Wie könnte ich dennoch diese configuration auslesen, hintereinander. Danke an Alle! [edit=sakura] Titel angepasst. Mfg, sakura[/edit] |
Re: XML Node ohne EndTag auslesen (OmniXML)
jedenfalls nicht mit den standard xml klassen, denn die erwarten imho alle wellformed xml.
bau dir halt ne stringlist und frag dann den entsprechenden wert ab |
Re: XML Node ohne EndTag auslesen (OmniXML)
Aber kann man keine INformationen aus der XML auslesen die so gespeichert sind: ???
<configuration node1="wert1" node2="wert2" node3="wert3" /> GEht nicht...gibts nicht? |
Re: XML Node ohne EndTag auslesen (OmniXML)
Natürlich geht das, auch mit OmniXML.
XML-Code:
und
<test> </test>
XML-Code:
sind beide identisch und in Ordnung, da sie konform sind.
<test />
Einfach auf die Attribute zugreifen. Welche Fehlermeldungen bekommst du denn genau? |
Re: XML Node ohne EndTag auslesen (OmniXML)
wie gesagt, bei so einer verkorksten xmlfile wirst du mit XML-Parsern gegen die wand fahrn.
lad dir dein file in nem stream oder ähnlichem und frag die Attribute zeilenweise ab, ne andere lösung fällt mir zumindest nicht ein... // EDIT: Oops, ich seh grad dass dein File eigentlich valide sein sollte... ( <endtag /> ) |
Re: XML Node ohne EndTag auslesen (OmniXML)
Liste der Anhänge anzeigen (Anzahl: 1)
Hmm, wie spreche ich das mit OmniXML an? (gibt es fuer OmniXML Tutorials die genau das abfangen?)
Der Fehler: SIehe Anhang |
Re: XML Node ohne EndTag auslesen (OmniXML)
Hast du dir die Fehlermeldung überhaupt einmal näher angesehen? Du hast uns bis jetzt keine einzige betroffene Zeile gezeigt, da können wir nur Däumchen drehen.
|
Re: XML Node ohne EndTag auslesen (OmniXML)
Angefangen hatte ich so:
Delphi-Quellcode:
begin
if sopendialog1.Execute then begin // try doc:=createxmldoc; doc.Load(sOpenDialog1.filename); Doc.DocumentElement.SelectNodes('configuration'); slabel1.Caption:= command.Text ; end; |
Re: XML Node ohne EndTag auslesen (OmniXML)
Ich hab mich mit HIlfe von DP etc selbst weitergebracht, jedoch ist das hier echt kniffelig!
Mein Delphi-Code:
Delphi-Quellcode:
Und hier die XML File:
doc: IXMLDOMDocument;
sName, sValue, xp: String; nl: IXMLDOMNodeList; iElem, iAttr: Integer; e: IXMLDOMElement; begin if sopendialog1.Execute then begin doc := CoDomDocument.Create; doc.async := False; if doc.load(sopendialog1.FileName) then begin xp := 'lago-config/client/configuration'; nl := doc.selectNodes(xp); for iElem := 0 to Pred(nl.length) do begin e := nl.item[iElem] as IXMLDOMElement; ShowMessage('tagname = ' + e.tagName); with e.attributes do begin for iAttr := 0 to Pred(length) do begin sName := item[iAttr].nodeName; sValue := VarToStr(item[iAttr].nodeValue); ShowMessage(Format('%s="%s"', [sName, sValue])); end; end; end; end else ShowMessage(doc.parseError.reason); end; end;
XML-Code:
Der Parse Error Text lautet jetzt:
<?xml version="1.0" encoding="ISO-8859-1"?>
<lago-config> <client> <configuration name="test" name2="test2" /> <configuration name="test" name2="test2" /> </client> <server> <datasource name="test" name2="test2" /> <user name="test" password="test" /> </datasource> </server> </lago-config>
Code:
Das macht ja auch Sinn! WEil es verschachtelt ist. Könnt ihr mir helfen?
Das Endtag "datasource" stimmt nicht mit dem Startag "server" überein.
Wie muss ich den XPath ändern, dass ich das abfangen kann? Anforderung ist nur, dass ich alle Infos rauslesen kann! Danke im Vorraus! |
Re: XML Parse Error - XPath Fehler bei verschachtelter Struk
XML-Code:
Der Fehler liegt entweder in der 1. Zeile, indem du das tag mit "/" schließt...
<datasource name="test" name2="test2" />
<user name="test" password="test" /> </datasource> oder du lässt das </datasource> weg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz