Ich hab mich mit HIlfe von
DP etc selbst weitergebracht, jedoch ist das hier echt kniffelig!
Mein Delphi-Code:
Delphi-Quellcode:
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;
Und hier die
XML File:
XML-Code:
<?
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>
Der Parse Error Text lautet jetzt:
Code:
Das Endtag "datasource" stimmt nicht mit dem Startag "server" überein.
Das macht ja auch Sinn! WEil es verschachtelt ist. Könnt ihr mir helfen?
Wie muss ich den XPath ändern, dass ich das abfangen kann?
Anforderung ist nur, dass ich alle Infos rauslesen kann!
Danke im Vorraus!