Atrybuty i metody XML DOM

Atrybuty i metody definiują interfejs programowania XML DOM.

Przykład

Poniższy przykład używa pliku XML books.xml.

Funkcja loadXMLDoc()Znajduje się w zewnętrznym JavaScript, do ładowania plików XML.

Funkcja loadXMLString()Znajduje się w zewnętrznym JavaScript, do ładowania ciągów XML.

Ładowanie i analizowanie plików XML
Ładowanie i analizowanie ciągów XML

Interfejs programowania

DOM symuluje XML jako serię interfejsów węzłów. Można do nich dostęp poprzez JavaScript lub inne języki programowania. W tym kursie używamy JavaScript.

Interfejs programowania DOM jest definiowany przez zestaw standardowych atrybutów i metod.

AtrybutyCzęsto używa się w sposób "co jest czymś" (na przykład nazwa węzła to "book").

MetodaZwykle używane w formie "co zrobić z czymś" (np. usunięcie węzła "book").

Atrybuty XML DOM

Niektóre typowe atrybuty DOM:

  • x.nodeName - Nazwa x
  • x.nodeValue - Wartość x
  • x.parentNode - Rodzic x
  • x.childNodes - Podwęzła x
  • x.attributes - Węzły atrybutów x

Komentarz:W powyższej liście, x jest obiektem węzła.

Metody XML DOM

  • x.getElementsByTagName(name) - Pobierz wszystkie elementy z oznaczeniem name
  • x.appendChild(node) - Wstaw podwęzeł do x
  • x.removeChild(node) - Usuń podwęzeł z x

Komentarz:W powyższej liście, x jest obiektem węzła.

Przykład

JavaScript do pobierania tekstu z elementu <title> z pliku books.xml:

txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue

Po wykonaniu tego zdania, wartość zapisana w txt to "Harry Potter".

Wyjaśnienie:

  • xmlDoc - XML DOM utworzony przez parser
  • getElementsByTagName("title")[0] - Pierwszy element <title>
  • childNodes[0] - Pierwszy podwęzeł elementu <title>
  • nodeValue - Wartość węzła (tekst sam w sobie)

W powyższym przykładzie, getElementsByTagName jest metodą, a childNodes i nodeValue są atrybutami.

Analiza pliku XML - przykład wielo-przeglądarkowy

Poniższy fragment kodu używa funkcji loadXMLDoc, aby books.xml Wczytaj parser XML i wyświetl dane pierwszego book:

xmlDoc=loadXMLDoc("books.xml");
document.write(xmlDoc.getElementsByTagName("title"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("author"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("year"))
[0].childNodes[0].nodeValue);

Wynik:

Harry Potter
J K. Rowling
2005

TIY

W powyższym przykładzie, dla każdego węzła tekstowego używamy childNodes[0], nawet jeśli każdy element ma tylko jeden węzeł tekstowy. Jest to spowodowane tym, że metoda getElementsByTagName() zawsze zwraca tablicę.

Analiza ciągu XML - przykład wielo-przeglądarkowy

Poniższy kod ładuje i解析uje ciąg XML:

Poniższy fragment kodu używa funkcji loadXMLString, aby books.xml Wczytaj parser XML i wyświetl dane pierwszego book:

text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
xmlDoc=loadXMLString(text);
document.write(xmlDoc.getElementsByTagName("title"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("author"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("year"))
[0].childNodes[0].nodeValue);

Wynik:

Harry Potter
J K. Rowling
2005

TIY