Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi OmniXML, XPath und Enumeration (https://www.delphipraxis.net/198100-omnixml-xpath-und-enumeration.html)

Codehunter 4. Okt 2018 07:39

OmniXML, XPath und Enumeration
 
Moin!

Ich habe folgendes (Beispiel-) XML:

Code:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <Items
            xmlns="http://www.anywhere.com/any-api/">
            <Set>
                <Item>
                    <PropA>regtehtghstdghswgeqg</PropA>
                    <PropB>trgtegwegreqgreqgqasfg</PropB>
                </Item>
                <Item>
                    <PropA>fgsfdgagadfgsrafg</PropA>
                    <PropB>ggeqrbhtjhreznj</PropB>
                </Item>
                <Item>
                    <PropA>afgsfgsagasrfgrafg</PropA>
                    <PropB>tghrezjhernhwrbhsfdh</PropB>
                </Item>
                <Item>
                    <PropA>sgbsdsbdbsdbg</PropA>
                    <PropB>regwrekjgweltgn</PropB>
                </Item>
                <Item>
                    <PropA>thgtrghadgsdgsdfbg</PropA>
                    <PropB>dgbhtgghghwdsgbsgdb</PropB>
                </Item>
                <Item>
                    <PropA>teghzjrsfbstegsgbfg</PropA>
                    <PropB>thwrtghsdgsdbgsdfgsd</PropB>
                </Item>
                <Item>
                    <PropA>trhdfbgdbhwtghsdfbg</PropA>
                    <PropB>bnfgnjmkkrgjm</PropB>
                </Item>
            </Set>
        </Items>
    </soap:Body>
</soap:Envelope>
Jetzt würde ich gerne mit XPath arbeiten. Bei MSXML hätte folgender XPath funktioniert:
Code:
soap:Body/Items/Set/[0]/PropA
Allerdings kommt hier OmniXML zum Einsatz. Hier kann ich zwar schön mit
Code:
//Set/
abkürzen, allerdings meckert der Parser dann bei
Code:
//Set/[0]/PropA
"Invalid predicate [0]".

Grüße
Cody

EDIT: Hat sich erledigt. Kaum war die Frage geschrieben, bin ich dahinter gekommen dass der wesentliche Unterschied ist, dass MSXML bei solchen Enumerationen bei 0 beginnt und OmniXML bei 1.

mjustin 4. Okt 2018 07:47

AW: OmniXML, XPath und Enumeration
 
Mit dem Xpath Tester https://www.freeformatter.com/xpath-tester.htm bekomme ich eine Fehlermeldung bei //Set/, dass man XPath 3.1 aktivieren muss -> das könnte darauf hindeuten, dass OmniXML das nicht unterstützt.

Edit: oh schön ;)

Codehunter 4. Okt 2018 07:52

AW: OmniXML, XPath und Enumeration
 
Ja, kleiner Fehler, große Wirkung. Schade dass man wegen solcher Inkonsistenzen immer wieder Zeit verplempert. Aber schön dass es geht. Ich muss sagen, OmniXML hat trotz leichter Performance-Nachteile im Vergleich zu MSXML einige Vorzüge, insbesondere bei Namespaces und Prefixen. Danke dir trotzdem für die schnelle Reaktion.

himitsu 4. Okt 2018 09:39

AW: OmniXML, XPath und Enumeration
 
Item[0] statt nur [0] ?

[edit] Dann ist aber die Fehlermeldung bissl unglücklich, denn [0] ist nicht komplett "ungültig", sondern nur "außerhalb des gültigen Bereichs" (invalid index).

Codehunter 4. Okt 2018 09:55

AW: OmniXML, XPath und Enumeration
 
Zitat:

Zitat von himitsu (Beitrag 1414837)
Item[0] statt nur [0] ?

[edit] Dann ist aber die Fehlermeldung bissl unglücklich, denn [0] ist nicht komplett "ungültig", sondern nur "außerhalb des gültigen Bereichs" (invalid index).

Ja, die gleichen Gedanken hab ich mir auch gemacht. Bei einer vernünftigen Fehlermeldung wär ich ja schnell drauf gekommen aber so...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz