Bekommen Wert von xsi:type-mit xpath
Ich versuche, um zu bestimmen, die korrekte XPath-Ausdruck zur Rückgabe der xsi:type
- Attribut auf die Body
element. Ich habe versucht, das, was scheint wie alles ohne Glück. Basierend auf was ich gelesen habe scheint dies nahe, aber es ist offensichtlich nicht die richtige Lage. Die schnelle Führung so, dass ich endlich zur Ruhe?
//v20:Body/@xsi:type
Ich will es zurück v20:SmsMessageV1RequestBody
<v20:MessageV1Request>
<v20:Header>
<v20:Source>
<v20:Name>SOURCE_APP</v20:Name>
<v20:ReferenceId>1326236916621</v20:ReferenceId>
<v20:Principal>2001</v20:Principal>
</v20:Source>
</v20:Header>
<v20:Body xsi:type="v20:SmsMessageV1RequestBody">
<v20:ToAddress>5555551212</v20:ToAddress>
<v20:FromAddress>11111</v20:FromAddress>
<v20:Message>TEST</v20:Message>
</v20:Body>
</v20:MessageV1Request>
- Der Xpath Ausdruck sieht gut aus für mich. Sind Sie mit diesem XPath in XQUERY, ein XSLT-oder etwas anderes? Die wahrscheinlichste Ursache für ein problem hier ist die Verwirrung, die durch die namespace-Präfixe. Ein Weg, Sie zu beseitigen namespaces als eine Quelle der Verwirrung ist, zu schreiben, die xpath als dieses: //*[local-name() eq 'Body']/@*[local-name() eq 'type']
- Murray ist richtig, denn es gibt im Allgemeinen zwei Möglichkeiten für den Umgang mit namespaces in XPath - erste: mit
local-name()
undnamespace-uri()
XPath-Funktionen, die zweite: mit den richtigen Mechanismen der XPath-engine, z.B. für den standard JAXP müssen Sie richtig konfiguriert NamespaceContext die Karten Präfixe für namespaces.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als wurde darauf hingewiesen, in den Kommentaren, haben Sie zwei Möglichkeiten:
local-name()
Verweis auf die Ziel-Knoten, die ohne Rücksicht auf namespacesHier ist, wie um letzteres zu tun, die in Java:
Beachten Sie, dass ich ' m vorausgesetzt, die folgenden namespace-Deklarationen:
Müssen Sie update
getNamespaceURI
um die tatsächlichen Werte.Alle Super Antworten/feedback. Meine eigentliche Problem scheint behoben haben sich mit einer Nacht Weg und frische bauen in den morgen. Ich werde die Verbesserung mit dem feedback. Vielen Dank an alle.