模組xml
xml 處理模組,可以使用xml 模組解析和處理xml 和html 文件
要解析xml 文件,你可以使用以下程式碼:
1
2
3
4
5
6
7var xml = require('xml');
var fs = require('fs');
var xmlStr = fs.readFile('test.xml');
var xmlDoc = xml.parse(xmlStr);
console.log(xmlDoc.documentElement.nodeName); // output root node name
在上面的程式碼中,我們使用fs模組的readFile 方法讀取了一個xml 文件,然後使用xml 模組的parse 方法解析該xml 文件,並傳回一個XmlDocument物件xmlDoc。然後,我們就可以透過xmlDoc.documentElement 存取xml 文件的根元素了。
要解析html 文件,你只需稍微修改一下程式碼:
1
2
3
4
5
6
7var xml = require('xml');
var fs = require('fs');
var htmlStr = fs.readFile('test.html');
var xmlDoc = xml.parse(htmlStr, 'text/html');
console.log(xmlDoc.documentElement.nodeName); // output root node name
在這裡,我們同樣使用了fs模組的readFile 方法讀取了一個html 文件,但我們在呼叫xml 模組的parse 方法時指定了第二個參數為'text/html',這樣xml 模組就會按照html 的語法規則解析文件。
解析後的Xml 文檔物件都是XmlDocument類型,其屬性和方法都可以參考xml 物件模型(DOM)進行操作。
物件
Document
xml 文檔對象,參見XmlDocument物件
1XmlDocument xml.Document;
靜態函數
parse
解析xml/html 文本,並創建XmlDocument對象,不支援多語種
1
2static XmlDocument xml.parse(String source,
String type = "text/xml");
呼叫參數:
- source: String, 指定需要解析的xml/html 文字
- type: String, 指定文字類型,預設為text/xml,也可指定為text/html
回傳結果:
- XmlDocument, 返回創建的XmlDocument物件
解析xml/html,並創建XmlDocument對象,解析時會根據指定的語種轉換
1
2static XmlDocument xml.parse(Buffer source,
String type = "text/xml");
呼叫參數:
- source:Buffer, 指定需要解析的xml/html 二進位數據
- type: String, 指定文字類型,預設為text/xml,也可指定為text/html
回傳結果:
- XmlDocument, 返回創建的XmlDocument物件
serialize
序列化XmlNode為字串
1static String xml.serialize(XmlNode node);
呼叫參數:
回傳結果:
- String, 返回序列化的字串
常量
ELEMENT_NODE
XmlNode的nodeType 屬性常數,表示節點為XmlElement物件
1const xml.ELEMENT_NODE = 1;
ATTRIBUTE_NODE
XmlNode的nodeType 屬性常數,表示節點為XmlAttr物件
1const xml.ATTRIBUTE_NODE = 2;
TEXT_NODE
XmlNode的nodeType 屬性常數,表示節點為XmlText物件
1const xml.TEXT_NODE = 3;
CDATA_SECTION_NODE
XmlNode的nodeType 屬性常數,表示節點為XmlCDATASection物件
1const xml.CDATA_SECTION_NODE = 4;
PROCESSING_INSTRUCTION_NODE
XmlNode的nodeType 屬性常數,表示節點為XmlProcessingInstruction物件
1const xml.PROCESSING_INSTRUCTION_NODE = 7;
COMMENT_NODE
XmlNode的nodeType 屬性常數,表示節點為XmlComment物件
1const xml.COMMENT_NODE = 8;
DOCUMENT_NODE
XmlNode的nodeType 屬性常數,表示節點為XmlDocument物件
1const xml.DOCUMENT_NODE = 9;
DOCUMENT_TYPE_NODE
XmlNode的nodeType 屬性常數,表示節點為XmlDocumentType物件
1const xml.DOCUMENT_TYPE_NODE = 10;