AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi OmniXML, XPath und Enumeration
Thema durchsuchen
Ansicht
Themen-Optionen

OmniXML, XPath und Enumeration

Ein Thema von Codehunter · begonnen am 4. Okt 2018 · letzter Beitrag vom 4. Okt 2018
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

OmniXML, XPath und Enumeration

  Alt 4. Okt 2018, 08:39
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.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter ( 4. Okt 2018 um 08:52 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: OmniXML, XPath und Enumeration

  Alt 4. Okt 2018, 08:47
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
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: OmniXML, XPath und Enumeration

  Alt 4. Okt 2018, 08:52
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.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#4

AW: OmniXML, XPath und Enumeration

  Alt 4. Okt 2018, 10:39
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).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Okt 2018 um 10:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: OmniXML, XPath und Enumeration

  Alt 4. Okt 2018, 10:55
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...
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 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