Dies gibt auch wahr zurück, wenn AttachedXml NICHT VORHANDEN ist … was fehlt mir?
– Aravind Yarram
18. April 2011 um 14:56 Uhr
Es sollte nicht. Wenn es zurückkehrt true(), dann passt der XPath und wählt etwas aus. Es sollte zurückkehren false() wenn nichts ausgewählt ist.
– Mads Hansen
18. April 2011 um 15:20 Uhr
Das Sächsische Dokumentationobwohl etwas unklar, scheint darauf hinzudeuten, dass die JAXP XPath API zurückkehren wird false beim Auswerten eines XPath-Ausdrucks, wenn keine übereinstimmenden Knoten gefunden werden.
Dieser IBM-Artikel erwähnt einen Rückgabewert von null wenn keine Knoten übereinstimmen.
Möglicherweise müssen Sie basierend auf dieser API ein wenig mit den Rückgabetypen herumspielen, aber die Grundidee ist, dass Sie einfach einen normalen XPath ausführen und prüfen, ob das Ergebnis ein Knoten ist / false / null / etc.
XPathFactory xpathFactory = XPathFactory.newInstance(NamespaceConstant.OBJECT_MODEL_SAXON);
XPath xpath = xpathFactory.newXPath();
XPathExpression expr = xpath.compile("/Consumers/Consumer/DataSources/Credit/CreditReport/AttachedXml");
Object result = expr.evaluate(doc, XPathConstants.NODE);
if ( result == null ) {
// do something
}
Dimitre Nowatschew
Verwenden:
boolean(/*/*[@subjectIdentifier="Primary"]/*/*/*/*
[name()='AttachedXml'
and
namespace-uri()='http://xml.mycompany.com/XMLSchema'
]
)
Simon StenderBoisen
Wenn Sie versuchen, einen Knoten mit xpath auszuwählen, gibt Ihre xpath-Engine normalerweise null oder etwas Äquivalentes zurück, wenn der Knoten nicht existiert.
Wenn boolean() nicht verfügbar ist (das Tool, das ich verwende, nicht), ist eine Möglichkeit, dies zu erreichen:
//SELECT[@id='xpto']/OPTION[not(not(@selected))]
In diesem Fall ist innerhalb der /OPTION eine der Optionen die ausgewählte. Das “Ausgewählte” hat keinen Wert … es existiert einfach, während die anderen OPTIONEN kein “Ausgewähltes” haben. Damit ist das Ziel erreicht.
10540300cookie-checkWie überprüfe ich mit XPath, ob ein Element im XML vorhanden ist?yes
Welche Sprache verwenden Sie, um das XML auszuführen und den XPath zu analysieren? Die Antwort hängt davon ab.
– Jon Gauthier
16. April 2011 um 22:15 Uhr
Es ist eine Java-Engine (sächsisch), von der ich glaube, dass sie in SoapUI verwendet wird
– Aravind Yarram
16. April 2011 um 22:21 Uhr