Plik XML jest taki:

<products>
  <product>
   <id>1</id>
   <name>pen</name>
  </product>
  <product>
   <id>2</id>
   <name>pencil</name>
  </product>
</products>
<employees>
  <employee>
   <name>Jack</name>
  <employee>
  <employee>
   <name>Mark</name>
  <employee>
</employees>

Czy mogę dostać węzły <name>, które są dziećmi <product>? Czy jest dobrze dostosowany xpath API w JavaScript Dom?

3
mko 20 sierpień 2012, 09:18

3 odpowiedzi

Najlepsza odpowiedź

W nowoczesnych przeglądarkach możesz użyć querySelector, aby przemierzyć drzewo XML. Powiedzmy, że twój XML znajdujemy w div#xmlsample, wówczas ten kod da ci nodę do //product/name w prodNames:

var xmlDoc = (new DOMParser())
              .parseFromString(document.querySelector('#xmlsample').innerHTML,
              "application/xml"),
    prodNames = xmlDoc.querySelectorAll('product name');

Zobacz Ten jsfiddle

4
KooiInc 20 sierpień 2012, 13:27

jQuery ma interfejs API do analizowania i przemierzania XML.

var xmlObj = $.parseXML(xmlObj);

var nameNodes = xmlObj.find('product > name');

Z doc ..

jQuery.parSexml używa natywnej funkcji parsowania przeglądarki, aby utworzyć prawidłowy dokument XML. Ten dokument może być następnie przekazany do jQuery, aby utworzyć typowy obiekt jQuery, który może być przemierzony i manipulowany.

3
Esailija 20 sierpień 2012, 05:24

Czy mogę dostać węzły <name>, które są dziećmi <product>?

Dostarczany XML nie jest dobrze uformowany dokument XML (wymagany jest jeden górny element).

Również dwa <employee> Tagi start nie mają odpowiednich zamykania </employee> End-Tags.

Jeśli poprawny dokument XML jest taki :

<company>
    <products>
        <product>
            <id>1</id>
            <name>pen</name>
        </product>
        <product>
            <id>2</id>
            <name>pencil</name>
        </product>
    </products>
    <employees>
        <employee>
            <name>Jack</name>
        </employee>
        <employee>
            <name>Mark</name>
        </employee>
    </employees>
</company>

i wyrażenie Xpath są naprawdę wymagane , a następnie jeden wyrażenie XPath, który wybiera poszukiwane elementy:

/*/products/product/name

To wybiera element name, który jest dzieckiem elementu product, który jest dzieckiem elementu products, który jest dzieckiem górnego elementu dokumentu XML.

1
Dimitre Novatchev 20 sierpień 2012, 12:39