DOM、SAX和JSON是三種常見的處理XML數據的方式。
DOM(文檔對象模型)是一種模型,將整個XML文檔裝載到內存中,形成一個樹形結構。這種方式可以方便地遍歷和操作XML數據,但適用于小型的XML文檔。以下是一個DOM解析XML文件的示例代碼:
const xml = ""; const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xml, "text/xml"); const bookTitle = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue; const bookAuthor = xmlDoc.getElementsByTagName("author")[0].childNodes[0].nodeValue; Harry Potter J.K. Rowling
SAX(簡單API for XML)是一種基于事件的解析器,逐行讀取XML文件,并且僅在遇到起始標簽、結束標簽和文本時觸發事件。這種方式適用于大型XML文檔,因為它只在需要時讀取文件。以下是一個SAX解析XML文件的示例代碼:
const sax = require("sax"); const xml = ""; let bookTitle = ""; let bookAuthor = ""; const parser = sax.parser(true, {trim: true}); parser.onopentag = function(node) { if (node.name === "title") { this._textNode = bookTitle; } else if (node.name === "author") { this._textNode = bookAuthor; } } parser.ontext = function(text) { if (this._textNode) { this._textNode += text; } } parser.onend = function() { console.log("Book title: " + bookTitle); console.log("Book author: " + bookAuthor); } parser.write(xml).close(); Harry Potter J.K. Rowling
JSON(JavaScript對象表示)是一種輕量級的數據交換格式,與XML相比更易于閱讀和編寫,同時也更容易解析和生成。以下是一個將XML轉換為JSON的示例代碼:
const xml = ""; const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xml, "text/xml"); const book = {}; book.title = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue; book.author = xmlDoc.getElementsByTagName("author")[0].childNodes[0].nodeValue; const jsonString = JSON.stringify(book); console.log(jsonString); // {"title":"Harry Potter","author":"J.K. Rowling"} Harry Potter J.K. Rowling