xml解析與生成
說(shuō)明: 本模塊首批接口從API version 8開(kāi)始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。 開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
導(dǎo)入模塊
import xml from '@ohos.xml';
XmlSerializer
constructor
constructor(buffer: ArrayBuffer | DataView, encoding?: string)
XmlSerializer的構(gòu)造函數(shù)。
系統(tǒng)能力: SystemCapability.Utils.Lang
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
buffer | ArrayBuffer | DataView | 是 |
encoding | string | 否 | 編碼格式。 |
示例:
var arrayBuffer = new ArrayBuffer(1024);
var bufView = new DataView(arrayBuffer);
var thatSer = new xml.XmlSerializer(bufView);
setAttributes
setAttributes(name: string, value: string): void
設(shè)置Attributes方法。
系統(tǒng)能力: SystemCapability.Utils.Lang
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
name | string | 是 | 屬性的key值。 |
value | string | 是 | 屬性的value值。 |
示例:
var arrayBuffer = new ArrayBuffer(1024);
var bufView = new DataView(arrayBuffer);
var thatSer = new xml.XmlSerializer(bufView);
thatSer.setAttributes("importance", "high");
addEmptyElement
addEmptyElement(name: string): void
寫(xiě)入一個(gè)空元素。
系統(tǒng)能力: SystemCapability.Utils.Lang
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
name | string | 是 | 該空元素的元素名。 |
示例:
var arrayBuffer = new ArrayBuffer(1024);
var bufView = new DataView(arrayBuffer);
var thatSer = new xml.XmlSerializer(bufView);
thatSer.addEmptyElement("b"); // = >
setDeclaration
setDeclaration(): void
設(shè)置Declaration方法。
系統(tǒng)能力: SystemCapability.Utils.Lang
示例:
var arrayBuffer = new ArrayBuffer(1024);
var bufView = new DataView(arrayBuffer);
var thatSer = new xml.XmlSerializer(bufView);
thatSer.setDeclaration() // = > < ?xml version="1.0" encoding="utf-8"? >;
startElement
startElement(name: string): void
根據(jù)給定名稱寫(xiě)入元素開(kāi)始標(biāo)記。
系統(tǒng)能力: SystemCapability.Utils.Lang
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
name | string | 是 | 當(dāng)前元素的元素名。 |
示例:
var arrayBuffer = new ArrayBuffer(1024);
var thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.startElement("notel");
thatSer.endElement();// = > '< notel/ >';
endElement
endElement(): void
寫(xiě)入元素結(jié)束標(biāo)記。
系統(tǒng)能力: SystemCapability.Utils.Lang
示例:
var arrayBuffer = new ArrayBuffer(1024);
var bufView = new DataView(arrayBuffer);
var thatSer = new xml.XmlSerializer(bufView);
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("table");
thatSer.setAttributes("importance", "high");
thatSer.setText("Happy");
endElement(); // = > < h:table importance="high" xmlns:h="http://www.w3.org/TR/html4/" >Happy< /h:table >
setNamespace
setNamespace(prefix: string, namespace: string): void
寫(xiě)入當(dāng)前元素標(biāo)記的命名空間。
系統(tǒng)能力: SystemCapability.Utils.Lang
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
prefix | string | 是 | 當(dāng)前元素及其子元素的前綴。 |
namespace | string | 是 | 當(dāng)前元素及其子元素的命名空間。 |
示例:
var arrayBuffer = new ArrayBuffer(1024);
var thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDeclaration();
thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
thatSer.startElement("note");
thatSer.endElement();// = >'< ?xml version="1.0" encoding="utf-8"? >rn< h:note xmlns:h="http://www.w3.org/TR/html4/"/ >';
setComment
setComment(text: string): void
寫(xiě)入comment屬性。
系統(tǒng)能力: SystemCapability.Utils.Lang
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
text | string | 是 | 當(dāng)前元素的注釋內(nèi)容。 |
示例:
var arrayBuffer = new ArrayBuffer(1024);
var thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.startElement("note");
thatSer.setComment("Hi!");
thatSer.endElement(); // = > '< note >rn < !--Hi!-- >rn< /note >';
setCDATA
setCDATA(text: string): void
寫(xiě)入CDATA屬性。
系統(tǒng)能力: SystemCapability.Utils.Lang
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
text | string | 是 | CDATA屬性的內(nèi)容。 |
示例:
var arrayBuffer = new ArrayBuffer(1028);
var thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setCDATA('root SYSTEM') // = > '< ![CDATA[root SYSTEM]] >';
setText
setText(text: string): void
設(shè)置Text方法。
系統(tǒng)能力: SystemCapability.Utils.Lang
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
text | string | 是 | text屬性的內(nèi)容。 |
示例:
var arrayBuffer = new ArrayBuffer(1024);
var thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.startElement("note");
thatSer.setAttributes("importance", "high");
thatSer.setText("Happy1");
thatSer.endElement(); // = > '< note importance="high" >Happy1< /note >';
setDocType
setDocType(text: string): void
寫(xiě)入DocType屬性。
系統(tǒng)能力: SystemCapability.Utils.Lang
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
text | string | 是 | DocType屬性的內(nèi)容。 |
示例:
var arrayBuffer = new ArrayBuffer(1024);
var thatSer = new xml.XmlSerializer(arrayBuffer);
thatSer.setDocType('root SYSTEM'); // = > '< !DOCTYPE root SYSTEM >';
XmlPullParser
XmlPullParser
constructor(buffer: ArrayBuffer | DataView, encoding?: string)
創(chuàng)建并返回一個(gè)XmlPullParser對(duì)象,該XmlPullParser對(duì)象傳參兩個(gè), 第一參數(shù)是ArrayBuffer或DataView類型的一段內(nèi)存,第二個(gè)參數(shù)為文件格式(默認(rèn)為UTF-8)
系統(tǒng)能力: SystemCapability.Utils.Lang
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
buffer | ArrayBuffer | DataView | 是 |
encoding | string | 否 | 編碼格式(僅支持utf-8)。 |
示例:
var strXml =
'< ?xml version="1.0" encoding="utf-8"? >' +
'< note importance="high" logged="true" >' +
' < title >Happy< /title >' +
' < todo >Work< /todo >' +
' < todo >Play< /todo >' +
'< /note >';
var arrayBuffer = new ArrayBuffer(strXml.length*2);
var bufView = new Uint8Array(arrayBuffer);
var strLen = strXml.length;
for (var i = 0; i < strLen; ++i) {
bufView[i] = strXml.charCodeAt(i);//設(shè)置arraybuffer方式
}
var that = new xml.XmlPullParser(arrayBuffer);
parse
parse(option: ParseOptions): void
該接口用于解析xml。
系統(tǒng)能力: SystemCapability.Utils.Lang
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
option | [ParseOptions] | 是 | 用戶控制以及獲取解析信息的選項(xiàng)。 |
示例:
var strXml =
'< ?xml version="1.0" encoding="utf-8"? >' +
'< note importance="high" logged="true" >' +
' < title >Happy< /title >' +
' < todo >Work< /todo >' +
' < todo >Play< /todo >' +
'< /note >';
var arrayBuffer = new ArrayBuffer(strXml.length*2);
var bufView = new Uint8Array(arrayBuffer);
var strLen = strXml.length;
for (var i = 0; i < strLen; ++i) {
bufView[i] = strXml.charCodeAt(i);
}
var that = new xml.XmlPullParser(arrayBuffer);
var arrTag = {};
arrTag[0] = '132';
var i = 1;
function func(key, value){
arrTag[i] = 'key:'+key+' value:'+ value.getDepth();
i++;
return true;
}
var options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
that.parse(options);
ParseOptions
xml解析選項(xiàng)。
系統(tǒng)能力: 以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Utils.Lang
名稱 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
supportDoctype | boolean | 否 | 是否忽略Doctype , 默認(rèn)false。 |
ignoreNameSpace | boolean | 否 | 是否忽略NameSpace,默認(rèn)false。 |
tagValueCallbackFunction | (name: string, value: string)=> boolean | 否 | 獲取tagValue回調(diào)函數(shù)。 |
attributeValueCallbackFunction | (name: string, value: string)=> boolean | 否 | 獲取attributeValue回調(diào)函數(shù)。 |
tokenValueCallbackFunction | (eventType: [EventType], value: [ParseInfo])=> boolean | 否 | 獲取tokenValue回調(diào)函數(shù)。 |
ParseInfo
當(dāng)前xml解析信息。
getColumnNumber
getColumnNumber(): number
獲取當(dāng)前列號(hào),從1開(kāi)始。
系統(tǒng)能力: SystemCapability.Utils.Lang
返回值:
類型 | 說(shuō)明 |
---|---|
number | 返回當(dāng)前列號(hào)。 |
getDepth
getDepth(): number
獲取元素的當(dāng)前深度。
系統(tǒng)能力: SystemCapability.Utils.Lang
返回值:
類型 | 說(shuō)明 |
---|---|
number | 返回元素的當(dāng)前深度。 |
getLineNumber
getLineNumber(): number
獲取當(dāng)前行號(hào),從1開(kāi)始。
系統(tǒng)能力: SystemCapability.Utils.Lang
返回值:
類型 | 說(shuō)明 |
---|---|
number | 返回當(dāng)前行號(hào)。 |
getName
getName(): string
獲取當(dāng)前元素名稱。
系統(tǒng)能力: SystemCapability.Utils.Lang
返回值:
類型 | 說(shuō)明 |
---|---|
string | 返回當(dāng)前元素名稱。 |
getNamespace
getNamespace(): string
獲取當(dāng)前元素的命名空間。
系統(tǒng)能力: SystemCapability.Utils.Lang
返回值:
類型 | 說(shuō)明 |
---|---|
string | 返回當(dāng)前元素的命名空間。 |
getPrefix
getPrefix(): string
獲取當(dāng)前元素前綴。
系統(tǒng)能力: SystemCapability.Utils.Lang
返回值:
類型 | 說(shuō)明 |
---|---|
string | 返回當(dāng)前元素前綴。 |
getText
getText(): string
獲取當(dāng)前事件的文本內(nèi)容。
系統(tǒng)能力: SystemCapability.Utils.Lang
返回值:
類型 | 說(shuō)明 |
---|---|
string | 返回當(dāng)前事件的文本內(nèi)容。 |
isEmptyElementTag
isEmptyElementTag(): boolean
判斷當(dāng)前元素是否為空元素。
系統(tǒng)能力: SystemCapability.Utils.Lang
返回值:
類型 | 說(shuō)明 |
---|---|
boolean | 返回true,當(dāng)前元素為空元素。 |
isWhitespace
isWhitespace(): boolean
判斷當(dāng)前文本事件是否僅包含空格字符。
系統(tǒng)能力: SystemCapability.Utils.Lang
返回值:
類型 | 說(shuō)明 |
---|---|
boolean | 返回true,當(dāng)前文本事件僅包含空格字符。 |
getAttributeCount
getAttributeCount(): number
獲取當(dāng)前開(kāi)始標(biāo)記的屬性數(shù)。
系統(tǒng)能力: SystemCapability.Utils.Lang
返回值:
類型 | 說(shuō)明HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
---|---|
number | 當(dāng)前開(kāi)始標(biāo)記的屬性數(shù)。 |
EventType
事件枚舉。
系統(tǒng)能力: 以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Utils.Lang
名稱 | 枚舉值 | 說(shuō)明 |
---|---|---|
START_DOCUMENT | 0 | 啟動(dòng)文件事件。 |
END_DOCUMENT | 1 | 結(jié)束文件事件。 |
START_TAG | 2 | 啟動(dòng)標(biāo)簽事件。 |
END_TAG | 3 | 結(jié)束標(biāo)簽事件。 |
TEXT | 4 | 文本事件。 |
CDSECT | 5 | CDATA事件。 |
COMMENT | 6 | XML注釋事件。 |
DOCDECL | 7 | XML文檔類型聲明事件。 |
INSTRUCTION | 8 | XML處理指令聲明事件。 |
ENTITY_REFERENCE | 9 | 實(shí)體引用事件。 |
WHITESPACE | 10 | 空白事件。 |
審核編輯 黃宇
-
XML
+關(guān)注
關(guān)注
0文章
188瀏覽量
33094 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2358瀏覽量
42876
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論