Biorąc pod uwagę taką strukturę XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
Jak mogę uzyskać wartość lang
(gdzie lang
jest eng
tytuł książki) dla pierwszego elementu?
Odpowiedzi:
Użyj :
Oznacza to :
Wybierz
lang
atrybut elementu tytułowego, który jest dzieckiem pierwszegobook
elementu potomnego górnego elementu dokumentu XML.Aby uzyskać tylko wartość ciągu tego atrybutu, użyj standardowej funkcji XPath
string()
:źródło
lang
atrybutu. Jeśli atrybut nie zawiera nawiasów kwadratowych, nie będą one częścią wyniku oceny wyrażenia XPath. Domyślam się, że są one dodawane przez (nieodpowiednie) narzędzie, którego używasz./*/book[1]/title/@lang
wybiera zestaw węzłów o wartości 0 lub więcej węzłów atrybutów, a wyrażenie XPathstring(/*/book[1]/title/@lang)
po ocenie daje wartość ciągu tego zestawu węzłów - i jest to wartość ciągu pierwszego (w kolejności dokumentu) węzeł z tego zestawu węzłów.lang="eng"
jest tylko jedną z wielu reprezentacji tekstowych węzła atrybutu, który ma nazwę „lang”, nie należy do przestrzeni nazw i ma wartość ciągu „eng”Dzięki! To rozwiązało podobny problem, który miałem z atrybutem danych wewnątrz Div.
Użyj tej ścieżki xpath:
//*[@id="prop_sample"]/@data-want
Mam nadzieję, że to pomoże komuś innemu!
źródło
Możesz wypróbować poniżej wzorca xPath,
źródło
Możesz go również zdobyć
chociaż jeśli używasz XMLDOM z JavaScript, możesz napisać coś takiego
i
n1.text
da ci wartość"eng"
źródło
możesz użyć:
oznacza to, że otrzymujesz wszystkie węzły atrybutów o nazwie równej „lang” i otrzymujesz pierwszy.
źródło
Oto fragment otrzymywania wartości atrybutu „lang” za pomocą XPath i VTD-XML.
źródło
Jeśli używasz PostgreSQL, jest to właściwy sposób na zdobycie go. Jest to tylko założenie, w którym jak masz tabelę książek TITLE i PRICE kolumna z wypełnionymi danymi. Oto zapytanie
źródło