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() und namespace-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.
Schreibe einen Kommentar