xml解析與生成

2024-01-23 18:20 更新
說明

本模塊首批接口從API version 8開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。

導(dǎo)入模塊

  1. import xml from '@ohos.xml';

XmlSerializer

XmlSerializer接口用于生成XML文件。

constructor

constructor(buffer: ArrayBuffer | DataView, encoding?: string)

XmlSerializer的構(gòu)造函數(shù)。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

buffer

ArrayBuffer | DataView

用于接收寫入xml信息的ArrayBuffer或DataView內(nèi)存。

encoding

string

編碼格式,默認(rèn)'utf-8'(目前僅支持'utf-8')。

示例:

  1. let arrayBuffer = new ArrayBuffer(2048);
  2. let thatSer = new xml.XmlSerializer(arrayBuffer,"utf-8");
  3. thatSer.setDeclaration();
  4. let result = '<?xml version="1.0" encoding="utf-8"?>';
  5. let view = new Uint8Array(arrayBuffer);
  6. let view1 = "";
  7. for (let i = 0; i < result.length; ++i) {
  8. view1 = view1 + String.fromCodePoint(view[i]);
  9. }
  10. console.log(view1) // <?xml version="1.0" encoding="utf-8"?>

setAttributes

setAttributes(name: string, value: string): void

設(shè)置Attributes方法。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

name

string

屬性的key值。

value

string

屬性的value值。

示例:

  1. const myMAX = 2048;
  2. let arrayBuffer = new ArrayBuffer(myMAX);
  3. let thatSer = new xml.XmlSerializer(arrayBuffer);
  4. thatSer.startElement("note");
  5. thatSer.setAttributes("importance1", "high1");
  6. thatSer.endElement();
  7. let result = '<note importance1="high1"/>';
  8. let view = new Uint8Array(arrayBuffer);
  9. let view1 = "";
  10. for (let i = 0; i < result.length; ++i) {
  11. view1 = view1 + String.fromCodePoint(view[i]);
  12. }
  13. console.log(view1) // <note importance1="high1"/>

addEmptyElement

addEmptyElement(name: string): void

寫入一個空元素。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

name

string

該空元素的元素名。

示例:

  1. const myMAX = 2048;
  2. let arrayBuffer = new ArrayBuffer(myMAX);
  3. let thatSer = new xml.XmlSerializer(arrayBuffer);
  4. thatSer.addEmptyElement("d");
  5. let result = '<d/>';
  6. let view = new Uint8Array(arrayBuffer);
  7. let view1 = "";
  8. for (let i = 0; i < result.length; ++i) {
  9. view1 = view1 + String.fromCodePoint(view[i]);
  10. }
  11. console.log(view1) // <d/>

setDeclaration

setDeclaration(): void

設(shè)置Declaration方法。

系統(tǒng)能力: SystemCapability.Utils.Lang

示例:

  1. const myMAX = 2048;
  2. let arrayBuffer = new ArrayBuffer(myMAX);
  3. let thatSer = new xml.XmlSerializer(arrayBuffer);
  4. thatSer.setDeclaration();
  5. thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
  6. thatSer.startElement("note");
  7. thatSer.endElement();
  8. let result = '<?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>';
  9. let view = new Uint8Array(arrayBuffer);
  10. let view1 = "";
  11. for (let i = 0; i < result.length; ++i) {
  12. view1 = view1 + String.fromCodePoint(view[i]);
  13. }
  14. console.log(view1)
  15. // <?xml version="1.0" encoding="utf-8"?>
  16. // <h:note xmlns:h="http://www.w3.org/TR/html4/"/>

startElement

startElement(name: string): void

根據(jù)給定名稱寫入元素開始標(biāo)記。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

name

string

當(dāng)前元素的元素名。

示例:

  1. const myMAX = 2048;
  2. let arrayBuffer = new ArrayBuffer(myMAX);
  3. let thatSer = new xml.XmlSerializer(arrayBuffer);
  4. thatSer.setDeclaration();
  5. thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
  6. thatSer.startElement("note");
  7. thatSer.endElement();
  8. let result = '<?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>';
  9. let view = new Uint8Array(arrayBuffer);
  10. let view1 = "";
  11. for (let i = 0; i < result.length; ++i) {
  12. view1 = view1 + String.fromCodePoint(view[i]);
  13. }
  14. console.log(JSON.stringify(view1)) // <?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>

endElement

endElement(): void

寫入元素結(jié)束標(biāo)記。

系統(tǒng)能力: SystemCapability.Utils.Lang

示例:

  1. const myMAX = 2048;
  2. let arrayBuffer = new ArrayBuffer(myMAX);
  3. let thatSer = new xml.XmlSerializer(arrayBuffer);
  4. thatSer.setDeclaration();
  5. thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
  6. thatSer.startElement("note");
  7. thatSer.endElement();
  8. let result = '<?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>';
  9. let view = new Uint8Array(arrayBuffer);
  10. let view1 = "";
  11. for (let i = 0; i < result.length; ++i) {
  12. view1 = view1 + String.fromCodePoint(view[i]);
  13. }
  14. console.log(JSON.stringify(view1)) // <?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>

setNamespace

setNamespace(prefix: string, namespace: string): void

寫入當(dāng)前元素標(biāo)記的命名空間。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

prefix

string

當(dāng)前元素及其子元素的前綴。

namespace

string

當(dāng)前元素及其子元素的命名空間。

示例:

  1. const myMAX = 2048;
  2. let arrayBuffer = new ArrayBuffer(myMAX);
  3. let thatSer = new xml.XmlSerializer(arrayBuffer);
  4. thatSer.setDeclaration();
  5. thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
  6. thatSer.startElement("note");
  7. thatSer.endElement();
  8. let result = '<?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>';
  9. let view = new Uint8Array(arrayBuffer);
  10. let view1 = "";
  11. for (let i = 0; i < result.length; ++i) {
  12. view1 = view1 + String.fromCodePoint(view[i]);
  13. }
  14. console.log(JSON.stringify(view1)) // <?xml version="1.0" encoding="utf-8"?>\r\n<h:note xmlns:h="http://www.w3.org/TR/html4/"/>

setComment

setComment(text: string): void

寫入comment屬性。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

text

string

當(dāng)前元素的注釋內(nèi)容。

示例:

  1. const myMAX = 2048;
  2. let arrayBuffer = new ArrayBuffer(myMAX);
  3. let thatSer = new xml.XmlSerializer(arrayBuffer);
  4. thatSer.setComment("Hello, World!");
  5. let result = '<!--Hello, World!-->';
  6. let view = new Uint8Array(arrayBuffer);
  7. let view1 = "";
  8. for (let i = 0; i < result.length; ++i) {
  9. view1 = view1 + String.fromCodePoint(view[i]);
  10. }
  11. console.log(view1) // <!--Hello, World!-->

setCDATA

setCDATA(text: string): void

寫入CDATA屬性。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

text

string

CDATA屬性的內(nèi)容。

示例:

  1. const myMAX = 2048;
  2. let arrayBuffer = new ArrayBuffer(myMAX);
  3. let thatSer = new xml.XmlSerializer(arrayBuffer);
  4. thatSer.setCDATA('root SYSTEM')
  5. let result = '<![CDATA[root SYSTEM]]>';
  6. let view = new Uint8Array(arrayBuffer);
  7. let view1 = "";
  8. for (let i = 0; i < result.length; ++i) {
  9. view1 = view1 + String.fromCodePoint(view[i]);
  10. }
  11. console.log(view1) // <![CDATA[root SYSTEM]]>

setText

setText(text: string): void

設(shè)置Text方法。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

text

string

text屬性的內(nèi)容。

示例:

  1. const myMAX = 2048;
  2. let arrayBuffer = new ArrayBuffer(myMAX);
  3. let thatSer = new xml.XmlSerializer(arrayBuffer);
  4. thatSer.startElement("note");
  5. thatSer.setAttributes("importance", "high");
  6. thatSer.setText("Happy1");
  7. thatSer.endElement();
  8. let result = '<note importance="high">Happy1</note>';
  9. let view = new Uint8Array(arrayBuffer);
  10. let view1 = "";
  11. for (let i = 0; i < result.length; ++i) {
  12. view1 = view1 + String.fromCodePoint(view[i]);
  13. }
  14. console.log(view1) // <note importance="high">Happy1</note>

setDocType

setDocType(text: string): void

寫入DocType屬性。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

text

string

DocType屬性的內(nèi)容。

示例:

  1. const myMAX = 2048;
  2. let arrayBuffer = new ArrayBuffer(myMAX);
  3. let thatSer = new xml.XmlSerializer(arrayBuffer);
  4. thatSer.setDocType('root SYSTEM "http://www.test.org/test.dtd"');
  5. let result = '<!DOCTYPE root SYSTEM "http://www.test.org/test.dtd">';
  6. let view = new Uint8Array(arrayBuffer);
  7. let view1 = "";
  8. for (let i = 0; i < result.length; ++i) {
  9. view1 = view1 + String.fromCodePoint(view[i]);
  10. }
  11. console.log(view1) // <!DOCTYPE root SYSTEM "http://www.test.org/test.dtd">

XmlPullParser

XmlPullParser接口用于解析現(xiàn)有的XML文件。

contructor

constructor(buffer: ArrayBuffer | DataView, encoding?: string)

構(gòu)造并返回一個XmlPullParser對象。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

buffer

ArrayBuffer | DataView

需要解析的xml文本信息。

encoding

string

編碼格式,默認(rèn)'utf-8'(目前僅支持'utf-8')。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<!DOCTYPE note [\n<!ENTITY foo "baa">]>' +
  4. '<note importance="high" logged="true">' +
  5. ' <![CDATA[\r\nfuncrion matchwo(a,6)\r\n{\r\nreturn 1;\r\n}\r\n]]>' +
  6. ' <!--Hello, World!-->' +
  7. ' <company>John &amp; Hans</company>' +
  8. ' <title>Happy</title>' +
  9. ' <title>Happy</title>' +
  10. ' <lens>Work</lens>' +
  11. ' <lens>Play</lens>' +
  12. ' <?go there?>' +
  13. ' <a><b/></a>' +
  14. ' <h:table xmlns:h="http://www.w3.org/TR/html4/">' +
  15. ' <h:tr>' +
  16. ' <h:td>Apples</h:td>' +
  17. ' <h:td>Bananas</h:td>' +
  18. ' </h:tr>' +
  19. ' </h:table>' +
  20. '</note>';
  21. let textEncoder = new util.TextEncoder();
  22. let arrbuffer = textEncoder.encodeInto(strXml);
  23. let that = new xml.XmlPullParser(arrbuffer.buffer, 'UTF-8');
  24. let str1 = '';
  25. function func1(name, value) {
  26. str1 += name + value;
  27. return true;
  28. }
  29. let options = { supportDoctype: true, ignoreNameSpace: true, tagValueCallbackFunction: func1 }
  30. that.parse(options);
  31. console.log(str1)
  32. // note [<!ENTITY foo "baa">]note funcrion matchwo(a,6){return 1;} Hello, World! companyJohn amp;amp; Hanscompany titleHappytitle titleHappytitle lensWorklens lensPlaylens go there abba h:table h:tr h:tdApplesh:td h:tdBananash:td h:tr h:tablenote

parse

parse(option: ParseOptions): void

該接口用于解析xml。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

option

ParseOptions

用戶控制以及獲取解析信息的選項。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<note importance="high" logged="true">' +
  4. ' <title>Happy</title>' +
  5. ' <todo>Work</todo>' +
  6. ' <todo>Play</todo>' +
  7. '</note>';
  8. let arrayBuffer = new ArrayBuffer(strXml.length);
  9. let bufView = new Uint8Array(arrayBuffer);
  10. let strLen = strXml.length;
  11. for (let tmp = 0; tmp < strLen; ++tmp) {
  12. bufView[tmp] = strXml.charCodeAt(tmp);
  13. }
  14. let that = new xml.XmlPullParser(arrayBuffer);
  15. let arrTag = {};
  16. let str = "";
  17. let i = 0;
  18. function func(key, value){
  19. arrTag[i] = 'key:'+key+' value:'+ value.getDepth();
  20. str += arrTag[i];
  21. i++;
  22. return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
  23. }
  24. let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
  25. that.parse(options);
  26. console.log(str);
  27. // 輸出:
  28. // key:0 value:0key:2 value:1key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:3 value:1key:1 value:0
  29. // 解析:
  30. // key代表了當(dāng)前事件類型,value為當(dāng)前解析的深度。你可以根據(jù)EVENTTYPE來知道具體的解析事件。例如本示例結(jié)果key: value代表含義為:
  31. // 0(START_DOCUMENT):0(起始深度為0), 2(START_TAG):1(解析到開始標(biāo)簽node, 對應(yīng)深度為1), 10(WHITESPACE):1(解析到空白標(biāo)簽空格, 對應(yīng)深度為1), 2(START_TAG):2(解析到開始標(biāo)簽title, 對應(yīng)深度為2), ...

ParseOptions

xml解析選項。

系統(tǒng)能力: 以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Utils.Lang

名稱

類型

必填

說明

supportDoctype

boolean

是否忽略Doctype , 默認(rèn)false。

ignoreNameSpace

boolean

是否忽略NameSpace,默認(rèn)false。

tagValueCallbackFunction

(name: string, value: string) => boolean

獲取tagValue回調(diào)函數(shù), 默認(rèn)null。

attributeValueCallbackFunction

(name: string, value: string) => boolean

獲取attributeValue回調(diào)函數(shù), 默認(rèn)null。

tokenValueCallbackFunction

(eventType: EventType, value: ParseInfo) => boolean

獲取tokenValue回調(diào)函數(shù), 默認(rèn)null。

ParseInfo

當(dāng)前xml解析信息。

getColumnNumber

getColumnNumber(): number

獲取當(dāng)前列號,從1開始。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

number

返回當(dāng)前列號。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<note importance="high" logged="true">' +
  4. ' <title>Happy</title>' +
  5. ' <todo>Work</todo>' +
  6. ' <todo>Play</todo>' +
  7. '</note>';
  8. let arrayBuffer = new ArrayBuffer(strXml.length);
  9. let bufView = new Uint8Array(arrayBuffer);
  10. let strLen = strXml.length;
  11. for (let tmp = 0; tmp < strLen; ++tmp) {
  12. bufView[tmp] = strXml.charCodeAt(tmp);
  13. }
  14. let that = new xml.XmlPullParser(arrayBuffer);
  15. let arrTag = {};
  16. let str = "";
  17. let i = 0;
  18. function func(key, value){
  19. arrTag[i] = 'key:'+key+' value:'+ value.getColumnNumber();
  20. str += arrTag[i];
  21. i++;
  22. return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
  23. }
  24. let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
  25. that.parse(options);
  26. console.log(str);
  27. // 輸出:
  28. // key:0 value:1key:2 value:77key:10 value:81key:2 value:88key:4 value:93key:3 value:101key:10 value:105key:2 value:111key:4 value:115key:3 value:122key:10 value:126key:2 value:132key:4 value:136key:3 value:143key:3 value:150key:1 value:299

getDepth

getDepth(): number

獲取元素的當(dāng)前深度。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

number

返回元素的當(dāng)前深度。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<note importance="high" logged="true">' +
  4. ' <title>Happy</title>' +
  5. ' <todo>Work</todo>' +
  6. ' <todo>Play</todo>' +
  7. '</note>';
  8. let arrayBuffer = new ArrayBuffer(strXml.length);
  9. let bufView = new Uint8Array(arrayBuffer);
  10. let strLen = strXml.length;
  11. for (let tmp = 0; tmp < strLen; ++tmp) {
  12. bufView[tmp] = strXml.charCodeAt(tmp);
  13. }
  14. let that = new xml.XmlPullParser(arrayBuffer);
  15. let arrTag = {};
  16. let str = "";
  17. let i = 0;
  18. function func(key, value){
  19. arrTag[i] = 'key:'+key+' value:'+ value.getDepth();
  20. str += arrTag[i];
  21. i++;
  22. return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
  23. }
  24. let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
  25. that.parse(options);
  26. console.log(str);
  27. // 輸出:
  28. // key:0 value:0key:2 value:1key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:10 value:1key:2 value:2key:4 value:2key:3 value:2key:3 value:1key:1 value:0
  29. // 解析:
  30. // key代表了當(dāng)前事件類型,value為當(dāng)前解析的深度。你可以根據(jù)EVENTTYPE來知道具體的解析事件。例如本示例結(jié)果key: value代表含義為:
  31. // 0(START_DOCUMENT):0(起始深度為0), 2(START_TAG):1(解析到開始標(biāo)簽node, 對應(yīng)深度為1), 10(WHITESPACE):1(解析到空白標(biāo)簽空格, 對應(yīng)深度為1), 2(START_TAG):2(解析到開始標(biāo)簽title, 對應(yīng)深度為2), ...

getLineNumber

getLineNumber(): number

獲取當(dāng)前行號,從1開始。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

number

返回當(dāng)前行號。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<note importance="high" logged="true">' +
  4. ' <title>Happy</title>' +
  5. ' <todo>Work</todo>' +
  6. ' <todo>Play</todo>' +
  7. '</note>';
  8. let arrayBuffer = new ArrayBuffer(strXml.length);
  9. let bufView = new Uint8Array(arrayBuffer);
  10. let strLen = strXml.length;
  11. for (let tmp = 0; tmp < strLen; ++tmp) {
  12. bufView[tmp] = strXml.charCodeAt(tmp);
  13. }
  14. let that = new xml.XmlPullParser(arrayBuffer);
  15. let arrTag = {};
  16. let str = "";
  17. let i = 0;
  18. function func(key, value){
  19. arrTag[i] = 'key:'+key+' value:'+ value.getLineNumber();
  20. str += arrTag[i];
  21. i++;
  22. return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
  23. }
  24. let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
  25. that.parse(options);
  26. console.log(str);
  27. // 輸出:
  28. // key:0 value:1key:2 value:1key:10 value:1key:2 value:1key:4 value:1key:3 value:1key:10 value:1key:2 value:1key:4 value:1key:3 value:1key:10 value:1key:2 value:1key:4 value:1key:3 value:1key:3 value:1key:1 value:1

getName

getName(): string

獲取當(dāng)前元素名稱。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

string

返回當(dāng)前元素名稱。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<note importance="high" logged="true">' +
  4. ' <title>Happy</title>' +
  5. ' <todo>Work</todo>' +
  6. ' <todo>Play</todo>' +
  7. '</note>';
  8. let arrayBuffer = new ArrayBuffer(strXml.length);
  9. let bufView = new Uint8Array(arrayBuffer);
  10. let strLen = strXml.length;
  11. for (let tmp = 0; tmp < strLen; ++tmp) {
  12. bufView[tmp] = strXml.charCodeAt(tmp);
  13. }
  14. let that = new xml.XmlPullParser(arrayBuffer);
  15. let arrTag = {};
  16. let str = "";
  17. let i = 0;
  18. function func(key, value){
  19. arrTag[i] = 'key:'+key+' value:'+ value.getName();
  20. str += arrTag[i];
  21. i++;
  22. return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
  23. }
  24. let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
  25. that.parse(options);
  26. console.log(str);
  27. // 輸出:
  28. // key:0 value:key:2 value:notekey:10 value:key:2 value:titlekey:4 value:key:3 value:titlekey:10 value:key:2 value:todokey:4 value:key:3 value:todokey:10 value:key:2 value:todokey:4 value:key:3 value:todokey:3 value:notekey:1 value:

getNamespace

getNamespace(): string

獲取當(dāng)前元素的命名空間。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

string

返回當(dāng)前元素的命名空間。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<note importance="high" logged="true">' +
  4. ' <title>Happy</title>' +
  5. ' <todo>Work</todo>' +
  6. ' <todo>Play</todo>' +
  7. '</note>';
  8. let arrayBuffer = new ArrayBuffer(strXml.length);
  9. let bufView = new Uint8Array(arrayBuffer);
  10. let strLen = strXml.length;
  11. for (let tmp = 0; tmp < strLen; ++tmp) {
  12. bufView[tmp] = strXml.charCodeAt(tmp);
  13. }
  14. let that = new xml.XmlPullParser(arrayBuffer);
  15. let arrTag = {};
  16. let str = "";
  17. let i = 0;
  18. function func(key, value){
  19. arrTag[i] = 'key:'+key+' value:'+ value.getNamespace();
  20. str += arrTag[i];
  21. i++;
  22. return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
  23. }
  24. let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
  25. that.parse(options);
  26. console.log(str);
  27. // 輸出:
  28. // key:0 value:key:2 value:key:10 value:key:2 value:key:4 value:key:3 value:key:10 value:key:2 value:key:4 value:key:3 value:key:10 value:key:2 value:key:4 value:key:3 value:key:3 value:key:1 value:

getPrefix

getPrefix(): string

獲取當(dāng)前元素前綴。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

string

返回當(dāng)前元素前綴。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<note importance="high" logged="true">' +
  4. ' <title>Happy</title>' +
  5. ' <todo>Work</todo>' +
  6. ' <todo>Play</todo>' +
  7. '</note>';
  8. let arrayBuffer = new ArrayBuffer(strXml.length);
  9. let bufView = new Uint8Array(arrayBuffer);
  10. let strLen = strXml.length;
  11. for (let tmp = 0; tmp < strLen; ++tmp) {
  12. bufView[tmp] = strXml.charCodeAt(tmp);
  13. }
  14. let that = new xml.XmlPullParser(arrayBuffer);
  15. let arrTag = {};
  16. let str = "";
  17. let i = 0;
  18. function func(key, value){
  19. arrTag[i] = 'key:'+key+' value:'+ value.getPrefix();
  20. str += arrTag[i];
  21. i++;
  22. return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
  23. }
  24. let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
  25. that.parse(options);
  26. console.log(str);
  27. // 輸出:
  28. // key:0 value:key:2 value:key:10 value:key:2 value:key:4 value:key:3 value:key:10 value:key:2 value:key:4 value:key:3 value:key:10 value:key:2 value:key:4 value:key:3 value:key:3 value:key:1 value:

getText

getText(): string

獲取當(dāng)前事件的文本內(nèi)容。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

string

返回當(dāng)前事件的文本內(nèi)容。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<note importance="high" logged="true">' +
  4. ' <title>Happy</title>' +
  5. ' <todo>Work</todo>' +
  6. ' <todo>Play</todo>' +
  7. '</note>';
  8. let arrayBuffer = new ArrayBuffer(strXml.length);
  9. let bufView = new Uint8Array(arrayBuffer);
  10. let strLen = strXml.length;
  11. for (let tmp = 0; tmp < strLen; ++tmp) {
  12. bufView[tmp] = strXml.charCodeAt(tmp);
  13. }
  14. let that = new xml.XmlPullParser(arrayBuffer);
  15. let arrTag = {};
  16. let str = "";
  17. let i = 0;
  18. function func(key, value){
  19. arrTag[i] = 'key:'+key+' value:'+ value.getText();
  20. str += arrTag[i];
  21. i++;
  22. return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
  23. }
  24. let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
  25. that.parse(options);
  26. console.log(str);
  27. // 輸出:
  28. // key:0 value:key:2 value:key:10 value: key:2 value:key:4 value:Happykey:3 value:key:10 value: key:2 value:key:4 value:Workkey:3 value:key:10 value: key:2 value:key:4 value:Playkey:3 value:key:3 value:key:1 value:

isEmptyElementTag

isEmptyElementTag(): boolean

判斷當(dāng)前元素是否為空元素。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

boolean

返回true,當(dāng)前元素為空元素。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<note importance="high" logged="true">' +
  4. ' <title>Happy</title>' +
  5. ' <todo>Work</todo>' +
  6. ' <todo>Play</todo>' +
  7. '</note>';
  8. let arrayBuffer = new ArrayBuffer(strXml.length);
  9. let bufView = new Uint8Array(arrayBuffer);
  10. let strLen = strXml.length;
  11. for (let tmp = 0; tmp < strLen; ++tmp) {
  12. bufView[tmp] = strXml.charCodeAt(tmp);
  13. }
  14. let that = new xml.XmlPullParser(arrayBuffer);
  15. let arrTag = {};
  16. let str = "";
  17. let i = 0;
  18. function func(key, value){
  19. arrTag[i] = 'key:'+key+' value:'+ value.isEmptyElementTag();
  20. str += arrTag[i];
  21. i++;
  22. return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
  23. }
  24. let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
  25. that.parse(options);
  26. console.log(str);
  27. // 輸出:
  28. // key:0 value:falsekey:2 value:falsekey:10 value:falsekey:2 value:falsekey:4 value:falsekey:3 value:falsekey:10 value:falsekey:2 value:falsekey:4 value:falsekey:3 value:falsekey:10 value:falsekey:2 value:falsekey:4 value:falsekey:3 value:falsekey:3 value:falsekey:1 value:false

isWhitespace

isWhitespace(): boolean

判斷當(dāng)前文本事件是否僅包含空格字符。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

boolean

返回true,當(dāng)前文本事件僅包含空格字符。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<note importance="high" logged="true">' +
  4. ' <title>Happy</title>' +
  5. ' <todo>Work</todo>' +
  6. ' <todo>Play</todo>' +
  7. '</note>';
  8. let arrayBuffer = new ArrayBuffer(strXml.length);
  9. let bufView = new Uint8Array(arrayBuffer);
  10. let strLen = strXml.length;
  11. for (let tmp = 0; tmp < strLen; ++tmp) {
  12. bufView[tmp] = strXml.charCodeAt(tmp);
  13. }
  14. let that = new xml.XmlPullParser(arrayBuffer);
  15. let arrTag = {};
  16. let str = "";
  17. let i = 0;
  18. function func(key, value){
  19. arrTag[i] = 'key:'+key+' value:'+ value.isWhitespace();
  20. str += arrTag[i];
  21. i++;
  22. return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
  23. }
  24. let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
  25. that.parse(options);
  26. console.log(str);
  27. // 輸出:
  28. // key:0 value:truekey:2 value:falsekey:10 value:truekey:2 value:truekey:4 value:falsekey:3 value:truekey:10 value:truekey:2 value:truekey:4 value:falsekey:3 value:truekey:10 value:truekey:2 value:truekey:4 value:falsekey:3 value:truekey:3 value:truekey:1 value:true

getAttributeCount

getAttributeCount(): number

獲取當(dāng)前開始標(biāo)記的屬性數(shù)。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

number

當(dāng)前開始標(biāo)記的屬性數(shù)。

示例:

  1. let strXml =
  2. '<?xml version="1.0" encoding="utf-8"?>' +
  3. '<note importance="high" logged="true">' +
  4. ' <title>Happy</title>' +
  5. ' <todo>Work</todo>' +
  6. ' <todo>Play</todo>' +
  7. '</note>';
  8. let arrayBuffer = new ArrayBuffer(strXml.length);
  9. let bufView = new Uint8Array(arrayBuffer);
  10. let strLen = strXml.length;
  11. for (let tmp = 0; tmp < strLen; ++tmp) {
  12. bufView[tmp] = strXml.charCodeAt(tmp);
  13. }
  14. let that = new xml.XmlPullParser(arrayBuffer);
  15. let arrTag = {};
  16. let str = "";
  17. let i = 0;
  18. function func(key, value){
  19. arrTag[i] = 'key:'+key+' value:'+ value.getAttributeCount();
  20. str += arrTag[i];
  21. i++;
  22. return true; // Determines whether to continually parse, which is used to continue or terminate parsing.
  23. }
  24. let options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
  25. that.parse(options);
  26. console.log(str);
  27. // 輸出:
  28. // key:0 value:0key:2 value:2key:10 value:0key:2 value:0key:4 value:0key:3 value:0key:10 value:0key:2 value:0key:4 value:0key:3 value:0key:10 value:0key:2 value:0key:4 value:0key:3 value:0key:3 value:0key:1 value:0

EventType

事件枚舉。

系統(tǒng)能力: 以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Utils.Lang

名稱

說明

START_DOCUMENT

0

啟動文件事件。

END_DOCUMENT

1

結(jié)束文件事件。

START_TAG

2

啟動標(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

實體引用事件。

WHITESPACE

10

空白事件。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號