Ci-dessous, la hiérarchie de mes éléments. Comment vérifier (en utilisant xpath) que l’élément AttachedXml est présent sous CreditReport sur Primary - consommateur
<Consumers xmlns="http://xml.mycompany.com/XMLSchema">
<Consumer subjectIdentifier="Primary">
<DataSources>
<Credit>
<CreditReport>
<AttachedXml><![CDATA[ blah blah]]>
Utilisez la fonction boolean()
XPath
La fonction booléenne convertit son argument en booléen comme suit:
un nombre est vrai si et seulement si ce n'est ni zéro positif ni négatif, ni NaN
un ensemble de noeuds est vrai si et seulement s'il n'est pas vide
une chaîne est vraie si et seulement si sa longueur est différente de zéro
un objet d'un type autre que les quatre types de base est converti en un booléen d'une manière qui dépend de ce type
S'il existe un AttachedXml dans le CreditReport de primaire Consommateur , il retournera alors true()
.
boolean(/mc:Consumers
/mc:Consumer[@subjectIdentifier='Primary']
//mc:CreditReport/mc:AttachedXml)
tiliser:
boolean(/*/*[@subjectIdentifier="Primary"]/*/*/*/*
[name()='AttachedXml'
and
namespace-uri()='http://xml.mycompany.com/XMLSchema'
]
)
Le documentation Saxon , bien qu'un peu incertain, semble suggérer que l'API JAXP XPath renverra false
lors de l'évaluation d'une expression XPath si aucun nœud correspondant n'est trouvé.
Cet article IBM mentionne une valeur de retour de null
lorsqu'aucun nœud ne correspond.
Vous devrez peut-être jouer avec les types de retour un peu en fonction de cette API, mais l’idée de base est que vous exécutez simplement un XPath normal et vérifiez si le résultat est un nœud/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
}
Normalement, lorsque vous essayez de sélectionner un nœud en utilisant xpath, votre moteur xpath renvoie la valeur null ou son équivalent si le nœud n'existe pas.
xpath: "/Consumers/Consumer/DataSources/Credit/CreditReport/AttachedXml"
Si vous utilisez xsl, répondez à cette question:
regarde mon exemple
<tocheading language="EN">
<subj-group>
<subject>Editors Choice</subject>
<subject>creative common</subject>
</subj-group>
</tocheading>
maintenant comment vérifier si creative common
est existe
tocheading/subj-group/subject/text() = 'creative common'
espérons que cela vous aide