2012-06-05 3 views
7

abrufen Ich habe eine einfache Voraussetzung, wo ich den Wert des Attributs xml:id, d. H. af1 abrufen muss. Ich benutze eine SAXParser und hier ist meine xpath:a/aff/@xml:id im Gegenteil ich konnte Wert der Verwendung der xpath:a/aff/@value holen.Wie Wert eines Attributs, das Doppelpunkt im Attributnamen enthält, mit Xpath

Aber ich konnte den Wert nicht abrufen, könnten Sie mir bitte helfen?

<?xml version="1.0" encoding="UTF-8" ?> 
<a> 
    <aff xml:id="af1" value="a"> 
     <uAff> 
      Hello 
     </uAff> 
    </aff> 
    <aff xml:id="corr1"> 
     <uAff> 
      Hello1 
     </uAff> 
    </aff> 
</a> 

Vielen Dank im Voraus.

Antwort

11

Um den Wert der Attribute erhalten Sie nutzen könnten:

/a/aff/@*[name()='xml:id'] 
+0

Vielen Dank :-) Ihre Antwort war SPOT ON :-) Können Sie bitte sagen, wie man den Wert des Tags, das Doppelpunkt hat. Say anstelle von aff, wenn es aff war: a, wie können wir es analysieren? –

+0

Wenn Sie aff haben: a then aff muss ein Namespace sein, und das ist ein anderes Problem. Schau mal hier: http://stackoverflow.com/questions/536441/xpath-namespace-driving-me-crazy – tibtof

+0

oder du kannst local-name() anstelle von name() verwenden, FWIW http://stackoverflow.com/a/11131700/32453 – rogerdpack

1

/a/aff/@ xml: id funktioniert gut, die Werte in immer ...

Versuchen Sie, beide Werte zu bekommen?

Wenn Sie nur den ersten Wert zu erhalten versuchen Sie nutzen könnten/a/aff [1]/@ xml: id

+0

Ihre Antwort ist korrekt, wenn es keinen Doppelpunkt gibt, aber wenn es einen Doppelpunkt gibt, holt sie nicht den Attributwert mit/a/aff/@ xml: id dieses xpath. –