![]() |
XML parsen mit MSXML oder xpath
Hallo DP !
Ich habe eine überschaubare XML-Datei:
Code:
Aus dieser XML Datei möchte ich verschiedene Dinge lesen. Ich habe folgende Funktion gebastelt, welche mir ein Value eines Attributes einer Node zurückgibt.
<?xml version="1.0" encoding="UTF-8"?>
<dpraxis> <meta> <name>Peter</name> <pageTitle>Peter Lustig reloaded</pageTitle> </meta> <Auftritt id="0" datum="2016-01-21" name="Heiopei"> <segmentIds>0</segmentIds> </Auftritt> <Segment id="0"> <seatAvailabilities seatId="0" seatStatus="NOT_AVAILABLE"> <pricePerTravelerType priceId="5"/> </seatAvailabilities> <seatAvailabilities seatId="1" seatStatus="NOT_AVAILABLE"> <pricePerTravelerType priceId="6"/> </seatAvailabilities> <seatAvailabilities seatId="2" seatStatus="NOT_AVAILABLE"> <pricePerTravelerType priceId="5"/> </seatAvailabilities> <seatAvailabilities seatId="72" seatStatus="AVAILABLE"> <pricePerTravelerType travelerTypeId="0" priceId="5"/> </seatAvailabilities> <seatAvailabilities seatId="73" seatStatus="AVAILABLE"> <pricePerTravelerType travelerTypeId="0" priceId="6"/> </seatAvailabilities> </Segment> <seatRows rowNumber="55"> <items id="71" columnLetter="A" type="SEAT"/> <items id="72" columnLetter="B" type="SEAT"/> </seatRows> <seatRows rowNumber="56"> <items id="73" columnLetter="A" type="SEAT"/> <items id="74" columnLetter="B" type="SEAT"/> </seatRows> </dpraxis>
Delphi-Quellcode:
Beispielaufruf:
uses MSXML
class Function GetNodeItem(xml, singlenode,item:string):string; class Function TmyXMLdriss.GetNodeItem(xml, singlenode,item:string):string; var XMLDOMDocument : IXMLDOMDocument; XMLDOMNode : IXMLDOMNode; XMLDOMNodeList : IXMLDOMNodeList; aXMLDOMNode : IXMLDOMNode; i: Integer; begin XMLDOMDocument:=CoDOMDocument.Create; try XMLDOMDocument.loadXML(xml); if (XMLDOMDocument.parseError.ErrorCode<>0) then raise Exception.CreateFmt('Error in Xml Data %s', [XMLDOMDocument.parseError]); try XMLDOMNode := XMLDOMDocument.selectSingleNode(singlenode); Except result := ''; end; if XMLDOMNode<>nil then begin try result := (XMLDOMNode.attributes.getNamedItem(item).Text); Except result := ''; end; end; finally XMLDOMDocument:=nil; end; End;
Delphi-Quellcode:
gibt mir 2016-01-21 aus. So weit so gut. Jetzt habe ich aber gesehen, dass z.B. auf
TXmyXMLdriss.SearchSinglevalue(fmain.memo_xml.text,'//Auftritt','datum',xpath_memo)
![]() In meinem Speziellen Fall habe ich versucht, eine Funktion zu bauen die mir aus dem Segment 0 alle noch verfügbaren Sitzplätze ausgibt. Die Frage ist nun: ist eine Lösung mit MSXML zu umständlich und Xpath einfacher ? Ich habe auch diese XPathHelper.Pas gesichtet, allerdings konnte ich damit noch keinen Erfolg verbuchen. Was meint ihr ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 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