Unten ist meine Elementhierarchie. So überprüfen Sie (mithilfe von xpath), ob das AttachedXml -Element unter CreditReport von Primary - vorhanden ist Verbraucher
<Consumers xmlns="http://xml.mycompany.com/XMLSchema">
<Consumer subjectIdentifier="Primary">
<DataSources>
<Credit>
<CreditReport>
<AttachedXml><![CDATA[ blah blah]]>
Verwenden Sie die Funktion boolean()
XPath
Die Boolesche Funktion konvertiert ihr Argument wie folgt in einen Booleschen Wert:
eine Zahl ist nur dann wahr, wenn sie weder eine positive noch eine negative Null noch eine NaN ist
eine Knotenmenge ist genau dann wahr, wenn sie nicht leer ist
ein String ist genau dann wahr, wenn seine Länge nicht Null ist
ein Objekt eines anderen Typs als der vier Basistypen wird in einer von diesem Typ abhängigen Weise in einen Booleschen Wert konvertiert
Wenn es ein AttachedXml im CreditReport von primary gibt Consumer , dann wird true()
zurückgegeben.
boolean(/mc:Consumers
/mc:Consumer[@subjectIdentifier='Primary']
//mc:CreditReport/mc:AttachedXml)
Verwenden:
boolean(/*/*[@subjectIdentifier="Primary"]/*/*/*/*
[name()='AttachedXml'
and
namespace-uri()='http://xml.mycompany.com/XMLSchema'
]
)
Die sächsische Dokumentation scheint, obwohl ein wenig unklar, darauf hinzudeuten, dass die JAXP XPath-API false
zurückgibt, wenn ein XPath-Ausdruck ausgewertet wird, 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 mit den Rückgabetypen ein wenig auf der Grundlage dieser API herumspielen, aber die Grundidee ist, dass Sie nur 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
}
Wenn Sie versuchen, einen Knoten mit xpath auszuwählen, gibt Ihre xpath-engine normalerweise null oder ein Äquivalent zurück, wenn der Knoten nicht vorhanden ist.
xpath: "/Consumers/Consumer/DataSources/Credit/CreditReport/AttachedXml"
Wenn Sie xsl verwenden, überprüfen Sie diese Frage auf eine Antwort:
schauen Sie sich mein Beispiel an
<tocheading language="EN">
<subj-group>
<subject>Editors Choice</subject>
<subject>creative common</subject>
</subj-group>
</tocheading>
nun, wie prüfe ich, ob creative common
ist vorhanden
tocheading/subj-group/subject/text() = 'creative common'
hoffe das hilft dir