Einzelnen Beitrag anzeigen

Benutzerbild von arne99
arne99

Registriert seit: 11. Jan 2005
Ort: Hamburg
158 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: XML Node ohne EndTag auslesen (OmniXML)

  Alt 12. Dez 2006, 10:25
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!
Arne
// u know? ID Service www.topsta.de
  Mit Zitat antworten Zitat