Hướng dẫn javascript parse xml - javascript phân tích cú pháp xml


Tất cả các trình duyệt chính có trình phân tích cú pháp XML tích hợp để truy cập và thao tác XML.


Trình phân tích cú pháp XML

XML DOM (mô hình đối tượng tài liệu) xác định các thuộc tính và phương thức để truy cập và chỉnh sửa XML.

Tuy nhiên, trước khi có thể truy cập tài liệu XML, nó phải được tải vào đối tượng DOM XML.

Tất cả các trình duyệt hiện đại có trình phân tích cú pháp XML tích hợp có thể chuyển đổi văn bản thành đối tượng XML DOM.


Phân tích chuỗi văn bản

Ví dụ này phân tích chuỗi văn bản vào đối tượng DOM XML và trích xuất thông tin từ nó bằng javascript:

Thí dụ


Văn bản VAR, trình phân tích cú pháp, XMLDOC;
var text, parser, xmlDoc;

Text = "" + "hàng ngày Ý" + "Giada de Laurentiis" + "2005" + "";
"Everyday Italian" +
"Giada De Laurentiis" +
"2005" +
"";

trình phân tích cú pháp = new DomParser (); XMLDOC = Parser.ParseFromString (Text, "Text/XML");
xmlDoc = parser.parseFromString(text,"text/xml");

document.getEuityById ("demo"). Internhtml = xmldoc.getElementsByTagName ("title") [0] .ChildNodes [0] .nodeValue;
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;


Hãy tự mình thử »



Ví dụ giải thích

Một chuỗi văn bản được xác định:

Text = "" + "hàng ngày Ý" + "Giada de Laurentiis" + "2005" + "";
"Everyday Italian" +
"Giada De Laurentiis" +
"2005" +
"";

Trình phân tích cú pháp XML DOM được tạo:

trình phân tích cú pháp = new DomParser ();

Trình phân tích cú pháp tạo một đối tượng DOM XML mới bằng chuỗi văn bản:

XMLDOC = Parser.ParseFromString (Text, "Text/XML");


Đối tượng XMLHTTPREQUEST

Đối tượng XMLHTTPrequest có trình phân tích cú pháp XML tích hợp.

Thuộc tính trả lời trả về phản hồi dưới dạng chuỗi.responseText property returns the response as a string.

Thuộc tính respessXML trả về phản hồi dưới dạng đối tượng DOM XML.responseXML property returns the response as an XML DOM object.

Nếu bạn muốn sử dụng phản hồi như một đối tượng DOM XML, bạn có thể sử dụng thuộc tính respendsXML.

Thí dụ

Request the file cd_catalog.xml and use the response as an XML DOM object:

Văn bản VAR, trình phân tích cú pháp, XMLDOC;
txt = "";
x = xmlDoc.getElementsByTagName("ARTIST");
for (i = 0; i < x.length; i++) {
    txt += x[i].childNodes[0].nodeValue + "
";
}
document.getElementById("demo").innerHTML = txt;

Hãy tự mình thử »



Đôi khi, bạn có thể cần phân tích nội dung XML và chuyển đổi nó thành một cây dom, hoặc ngược lại, tuần tự hóa một cây dom hiện có thành XML. Trong bài viết này, chúng tôi sẽ xem xét các đối tượng được cung cấp bởi nền tảng web để thực hiện các tác vụ chung của việc tuần tự hóa và phân tích cú pháp XML dễ dàng.

XMLSerializer

Nối tiếp các cây dom, chuyển đổi chúng thành các chuỗi chứa XML.

DOMParser

Xây dựng một cây dom bằng cách phân tích một chuỗi chứa XML, trả về XMLDocument hoặc Document khi thích hợp dựa trên dữ liệu đầu vào.

XMLHttpRequest

Tải nội dung từ URL; Nội dung XML được trả về dưới dạng đối tượng XML Document với cây DOM được xây dựng từ chính XML.

XPath

Một công nghệ để tạo các chuỗi có chứa địa chỉ cho các phần cụ thể của tài liệu XML và định vị các nút XML dựa trên các địa chỉ đó.

Tạo tài liệu XML

Sử dụng một trong các phương pháp sau đây để tạo tài liệu XML (là một thể hiện của Document.

Chuỗi phân tích cú pháp vào cây Dom

Ví dụ này chuyển đổi một đoạn XML trong chuỗi thành một cây dom bằng cách sử dụng DOMParser:

const xmlStr = 'hey!';
const parser = new DOMParser();
const doc = parser.parseFromString(xmlStr, "application/xml");
// print the name of the root element or error message
const errorNode = doc.querySelector("parsererror");
if (errorNode) {
  console.log("error while parsing");
} else {
  console.log(doc.documentElement.nodeName);
}

Phân tích các tài nguyên có thể giải quyết URL vào cây Dom

Sử dụng XMLHTTPREQUEST

Dưới đây là mã mẫu đọc và phân tích tệp XML có thể giải quyết URL vào cây dom:

const xhr = new XMLHttpRequest();

xhr.onload = () => {
  dump(xhr.responseXML.documentElement.nodeName);
}

xhr.onerror = () => {
  dump("Error while getting XML.");
}

xhr.open("GET", "example.xml");
xhr.responseType = "document";
xhr.send();

Giá trị được trả về trong trường

const xhr = new XMLHttpRequest();

xhr.onload = () => {
  dump(xhr.responseXML.documentElement.nodeName);
}

xhr.onerror = () => {
  dump("Error while getting XML.");
}

xhr.open("GET", "example.xml");
xhr.responseType = "document";
xhr.send();
4 của đối tượng
const xhr = new XMLHttpRequest();

xhr.onload = () => {
  dump(xhr.responseXML.documentElement.nodeName);
}

xhr.onerror = () => {
  dump("Error while getting XML.");
}

xhr.open("GET", "example.xml");
xhr.responseType = "document";
xhr.send();
3 là một Document được xây dựng bằng cách phân tích XML.

Nếu tài liệu là HTML, mã được hiển thị ở trên sẽ trả về Document. Nếu tài liệu là XML, đối tượng kết quả thực sự là XMLDocument. Hai loại về cơ bản là giống nhau; Sự khác biệt phần lớn là lịch sử, mặc dù sự khác biệt cũng có một số lợi ích thực tế.

Lưu ý: Trên thực tế cũng có một giao diện

const xhr = new XMLHttpRequest();

xhr.onload = () => {
  dump(xhr.responseXML.documentElement.nodeName);
}

xhr.onerror = () => {
  dump("Error while getting XML.");
}

xhr.open("GET", "example.xml");
xhr.responseType = "document";
xhr.send();
8, nhưng nó không nhất thiết là một loại độc lập. Trong một số trình duyệt, trong khi ở các trình duyệt khác, nó là bí danh cho giao diện Document. There is in fact an
const xhr = new XMLHttpRequest();

xhr.onload = () => {
  dump(xhr.responseXML.documentElement.nodeName);
}

xhr.onerror = () => {
  dump("Error while getting XML.");
}

xhr.open("GET", "example.xml");
xhr.responseType = "document";
xhr.send();
8 interface as well, but it is not necessarily an independent type. In some browsers it is, while in others it is an alias for the Document interface.

Tuần tự hóa một tài liệu XML

Đưa ra một Document, bạn có thể tuần tự hóa cây dom của tài liệu trở lại XML bằng phương pháp

const serializer = new XMLSerializer();
const xmlStr = serializer.serializeToString(doc);
1.

Sử dụng các phương pháp sau để tuần tự hóa nội dung của tài liệu XML bạn đã tạo trong phần trước.

Tuần tự hóa cây Dom thành chuỗi

Đầu tiên, tạo một cây Dom như được mô tả trong cách tạo một cây Dom. Ngoài ra, sử dụng một cây dom thu được từ XMLHttpRequest.

Để tuần tự hóa cây dom

const serializer = new XMLSerializer();
const xmlStr = serializer.serializeToString(doc);
3 vào văn bản XML, hãy gọi
const serializer = new XMLSerializer();
const xmlStr = serializer.serializeToString(doc);
1:

const serializer = new XMLSerializer();
const xmlStr = serializer.serializeToString(doc);

Các tài liệu HTML tuần tự

Nếu DOM bạn có là một tài liệu HTML, bạn có thể tuần tự hóa bằng cách sử dụng

const serializer = new XMLSerializer();
const xmlStr = serializer.serializeToString(doc);
5, nhưng có một tùy chọn đơn giản hơn: chỉ cần sử dụng thuộc tính
const serializer = new XMLSerializer();
const xmlStr = serializer.serializeToString(doc);
6 (nếu bạn chỉ muốn có hậu duệ của nút được chỉ định) hoặc thuộc tính ____27 nếu bạn muốn nút và nút Tất cả con cháu của nó.

const docInnerHtml = document.documentElement.innerHTML;

Do đó,

const serializer = new XMLSerializer();
const xmlStr = serializer.serializeToString(doc);
8 là một chuỗi chứa HTML của nội dung của tài liệu; Đó là, nội dung của phần tử ____29.

Bạn có thể nhận HTML tương ứng với

const serializer = new XMLSerializer();
const xmlStr = serializer.serializeToString(doc);
9 và hậu duệ của nó với mã này:

const docOuterHtml = document.documentElement.outerHTML;

Xem thêm