• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# js_api_module子系统/组件
2
3-   [简介](#简介)
4-   [目录](#目录)
5-   [说明](#说明)
6    -   [接口说明](#接口说明)
7    -   [使用说明](#使用说明)
8
9-   [相关仓](#相关仓)
10
11## 简介
12
13URL接口用于解析,构造,规范化和编码 URLs。 URL的构造函数创建新的URL对象。 以便对URL的已解析组成部分或对URL进行更改。URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串。
14
15URI表示统一资源标识符引用。
16
17xml表示指可扩展标记语言。
18
19XmlSerializer接口用于生成一个xml文件。 XmlSerializer的构造函数创建新的XmlSerializer对象,调用XmlSerializer对象的方法生成一个xml文件。XmlPullParser 接口用于解析已有的xml文件,XmlPullParser的构造函数创建新的XmlPullParser对象,调用XmlPullParser对象的方法解析xml。
20
21## 目录
22
23```
24base/compileruntime/js_api_module/
25├── Class:URL                                                                     # URL类
26│   ├── new URL(input[, base])                                                    # 创建URL对象
27│   ├── hash                                                                      # hash属性
28│   ├── host                                                                      # host属性
29│   ├── hostname                                                                  # hostname属性
30│   ├── href                                                                      # href属性
31│   ├── origin                                                                    # origin属性
32│   ├── password                                                                  # password属性
33│   ├── pathname                                                                  # pathname属性
34│   ├── port                                                                      # port属性
35│   ├── protocol                                                                  # protocol属性
36│   ├── search                                                                    # search属性
37│   ├── searchParams                                                              # searchParams属性
38│   ├── username                                                                  # username属性
39│   ├── toString()                                                                # toString方法
40│   └── toJSON()                                                                  # toJSON方法
41├── Class: URLSearchParams                                                        # URLSearchParams类
42│   ├── new URLSearchParams()                                                     # 创建URLSearchParams对象
43│   ├── new URLSearchParams(string)                                               # 创建URLSearchParams对象
44│   ├── new URLSearchParams(obj)                                                  # 创建URLSearchParams对象
45│   ├── new URLSearchParams(iterable)                                             # 创建URLSearchParams对象
46│   ├── append(name, value)                                                       # append方法
47│   ├── delete(name)                                                              # delete方法
48│   ├── entries()                                                                 # entries方法
49│   ├── forEach(fn[, thisArg])                                                    # forEach方法
50│   ├── get(name)                                                                 # get方法
51│   ├── getAll(name)                                                              # getAll方法
52│   ├── has(name)                                                                 # has方法
53│   ├── keys()                                                                    # keys方法
54│   ├── set(name, value)                                                          # set方法
55│   ├── sort()                                                                    # sort方法
56│   ├── toString()                                                                # toString方法
57│   ├── values()                                                                  # values方法
58│   └── urlSearchParams[Symbol.iterator]()                                        # 创建URLSearchParams对象
59├── Class:URI                                                                     # URI类
60│   ├── URI(str: string)                                                          # 创建URI对象
61│   ├── scheme                                                                    # scheme属性
62│   ├── authority                                                                 # authority属性
63│   ├── ssp                                                                       # ssp属性
64│   ├── userinfo                                                                  # userinfo属性
65│   ├── host                                                                      # host属性
66│   ├── port                                                                      # port属性
67│   ├── query                                                                     # query属性
68│   ├── fragment                                                                  # fragment属性
69│   ├── path                                                                      # path属性
70│   ├── equals(ob: Object)                                                        # equals方法
71│   ├── normalize()                                                               # normalize方法
72│   ├── checkIsAbsolute()                                                         # checkIsAbsolute方法
73│   ├── normalize()                                                               # normalize方法
74│   └── toString()                                                                # toString方法
75├── Class:ConvertXml                                                              # ConvertXml类
76│   ├── ConvertXml()                                                              # 创建ConvertXml类对象
77│   └── convert(xml: string, options: Object)                                     # convert方法
78├── Class:XmlSerializer                                                           # XmlSerializer类
79│   ├── new XmlSerializer(buffer: ArrayBuffer | DataView, encoding?: string)      # 创建XmlSerializer类对象
80│   ├── setAttributes(name: string, value: string)                                # 设置Attributes方法
81│   ├── addEmptyElement(name: string)                                             # 添加一个空元素方法
82│   ├── setDeclaration()                                                          # 设置Declaration方法
83│   ├── startElement(name: string)                                                # 设置开始元素方法
84│   ├── endElement()                                                              # 设置结束元素方法
85│   ├── setNamespace(prefix: string, namespace: string)                           # 设置命名空间方法
86│   ├── setCommnet(text: string)                                                  # 设置Commnet方法
87│   ├── setCData(text: string)                                                    # 设置CData方法
88│   ├── setText(text: string)                                                     # 设置Text方法
89│   └── setDocType(text: string)                                                  # 设置DocType方法
90└── Class: XmlPullParser                                                          # XmlPullParser类
91    ├── new (buffer: ArrayBuffer | DataView, encoding?: string)                   # 创建XmlPullParser对象
92    └── parse(option: ParseOptions)                                               # parse方法
93```
94
95## 说明
96
97### 接口说明
98
99
100| 接口名 | 说明 |
101| -------- | -------- |
102| URL(url: string,base?:string \| URL) | 创建并返回一个URL对象,该URL对象引用使用绝对URL字符串,相对URL字符串和基本URL字符串指定的URL。 |
103| tostring():string | 该字符串化方法返回一个包含完整 URL 的 USVString。它的作用等同于只读的 URL.href。 |
104| toJSON():string | 该方法返回一个USVString,其中包含一个序列化的URL版本。 |
105| new URLSearchParams() | URLSearchParams() 构造器无入参,该方法创建并返回一个新的URLSearchParams 对象。 开头的'?' 字符会被忽略。 |
106| new URLSearchParams(string) | URLSearchParams(string) 构造器的入参为string数据类型,该方法创建并返回一个新的URLSearchParams 对象。 开头的'?' 字符会被忽略。 |
107| new URLSearchParams(obj) | URLSearchParams(obj) 构造器的入参为obj数据类型,该方法创建并返回一个新的URLSearchParams 对象。 开头的'?' 字符会被忽略。 |
108| new URLSearchParams(iterable) | URLSearchParams(iterable) 构造器的入参为iterable数据类型,该方法创建并返回一个新的URLSearchParams 对象。 开头的'?' 字符会被忽略。 |
109| has(name: string): boolean | 检索searchParams对象中是否含有name。有则返回true,否则返回false。 |
110| set(name: string, value string): void |  检索searchParams对象中是否含有key为name的键值对。没有的话则添加该键值对,有的话则修改对象中第一个key所对应的value,并删除键为name的其余键值对。 |
111| sort(): void | 根据键的Unicode代码点,对包含在此对象中的所有键/值对进行排序,并返回undefined。 |
112| toString(): string | 根据searchParams对象,返回适用在URL中的查询字符串。 |
113| keys(): iterableIterator\<string> | 返回一个iterator,遍历器允许遍历对象中包含的所有key值。 |
114| values(): iterableIterator\<string> | 返回一个iterator,遍历器允许遍历对象中包含的所有value值。 |
115| append(name: string, value: string): void | 在searchParams对象中插入name, value键值对。 |
116| delete(name: string): void | 遍历searchParams对象,查找所有的name,删除对应的键值对。 |
117| get(name: string): string | 检索searchParams对象中第一个name,返回name键对应的值。 |
118| getAll(name: string): string[] | 检索searchParams对象中所有name,返回name键对应的所有值。 |
119| entries(): iterableIterator<[string, string]> | 返回一个iterator,允许遍历searchParams对象中包含的所有键/值对。 |
120| forEach(): void | 通过回调函数来遍历URLSearchParams实例对象上的键值对。 |
121| urlSearchParams\[Symbol.iterator]() | 返回查询字符串中每个名称-值对的ES6迭代器。迭代器的每个项都是一个JavaScript数组。 |
122| URI​(str: string) | 通过解析给定入参(String str)来构造URI。此构造函数严格按照RFC 2396附录A中的语法规定解析给定字符串。 |
123| scheme​ | 返回此 URI 的scheme部分,如果scheme未定义,则返回 null |
124| authority​ | 返回此 URI 的解码authority部分,如果authority未定义,则返回 null。 |
125| ssp​ |  返回此 URI 的解码scheme-specific部分。 |
126| userinfo​ | 返回此 URI 的解码userinfo部分。包含passworld和username。 |
127| host​ | 返回此 URI 的host部分,如果host未定义,则返回 null。 |
128| port​ | 返回此 URI 的port部分,如果port未定义,则返回 -1。URI 的port组件(如果已定义)是一个非负整数。 |
129| query​ | 返回此 URI 的query部分,如果query未定义,则返回 null。 |
130| fragment​ | 返回此 URI 的解码fragment组件,如果fragment未定义,则返回 null。|
131| path​ | 返回此 URI 的解码path组件,如果path未定义,则返回 null。 |
132| equals(ob: Object) | 测试此 URI 是否与另一个对象相等。如果给定的对象不是 URI,则此方法立即返回 false。 |
133| normalize​() | 规范化这个 URI 的路径。如果这个 URI 的path不规范,将规范后构造一个新 URI对象返回。 |
134| checkIsAbsolute​() | 判断这个 URI 是否是绝对的。当且仅当它具有scheme部分时,URI 是绝对的,返回值为true,否则返回值为false。 |
135| ConvertXml() | 用于构造ConvertXml类对象的构造函数。此构造函数无需传入参数。 |
136| convert(xml: string, options: Object)  | 返回按选项要求转化xml字符串的JavaScrip对象。 |
137| XmlSerializer(buffer: ArrayBuffer \| DataView, encoding?: string) | 创建并返回一个XmlSerializer对象,该XmlSerializer对象传参两个第一参数是ArrayBuffer或DataView一段内存,第二个参数为文件格式(默认为UTF-8)。 |
138| setAttributes(name: string, value: string): void | 给xml文件中写入属性Attributes属性。 |
139| addEmptyElement(name: string): void | 写入一个空元素。 |
140| setDeclaration(): void | 设置Declaration使用编码写入xml声明。例如:<?xml version=“1.0”encoding=“utf-8”> |
141| startElement(name: string): void | 写入具有给定名称的elemnet开始标记。|
142| endElement(): void | 写入元素的结束标记。 |
143| setNamespace(prefix: string, namespace: string): void | 写入当前元素标记的命名空间。 |
144| setCommnet(text: string): void | 写入comment属性。 |
145| setCData(text: string): void | 写入CData属性。 |
146| setText(text: string): void | 写入Text属性。 |
147| setDocType(text: string): void | 写入DocType属性。 |
148| XmlPullParser(buffer: ArrayBuffer \| DataView, encoding?: string) | 创建并返回一个XmlPullParser对象,该XmlPullParser对象传参两个第一参数是ArrayBuffer或DataView一段内存,第二个参数为文件格式(默认为UTF-8)。 |
149| parse(option: ParseOptions): void | 该接口用于解析xml,ParseOptions参数为一个接口包含五个可选参{supportDoctype?: boolea ignoreNameSpace?: boolean tagValueCallbackFunction?: (name: string, value: string) => boolean attributeValueCallbackFunction?: (name: string, value: string) => boolean) tokenValueCallbackFunction?: (eventType: EventType, value: ParseInfo) => boolean }。其中tokenValueCallbackFunction回调函数的入参1是事件类型,入参2是包含getColumnNumber、getDepth等get属性的info接口,用户可通过info.getDepth()等方法来获取当前解析过程中的depth等信息。 |
150### 使用说明
151
152各接口使用方法如下:
153
154
1551、new URL(url: string,base?:string|URL)
156```
157let b = new URL('https://developer.mozilla.org'); // => 'https://developer.mozilla.org/'
158
159let a = new URL( 'sca/./path/path/../scasa/text', 'http://www.example.com');
160// => 'http://www.example.com/sca/path/scasa/text'
161```
1622、tostring():string
163```
164const url = new URL('http://10.0xFF.O400.235:8080/directory/file?query#fragment');
165url.toString() // => 'http://10.0xff.o400.235:8080/directory/file?query#fragment'
166
167const url = new URL("http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html");
168url.toString() // => 'http://[fedc:ba98:7654:3210:fedc:ba98:7654:3210]/index.html'
169
170const url = new URL("http://username:password@host:8080/directory/file?query#fragment");
171url.toString() // => 'http://username:password@host:8080/directory/file?query#fragment'
172```
1733、toJSON():string
174```
175const url = new URL("https://developer.mozilla.org/en-US/docs/Web/API/URL/toString");
176url.toJSON(); // =>  'https://developer.mozilla.org/en-US/docs/Web/API/URL/toString'
177```
1784、new URLSearchParams()
179```
180let params = new URLSearchParams('foo=1&bar=2');
181```
1825、new URLSearchParams(string)
183```
184params = new URLSearchParams('user=abc&query=xyz');
185console.log(params.get('user'));
186// Prints 'abc'
187```
1886、new URLSearchParams(obj)
189```
190const params = new URLSearchParams({
191    user: 'abc',
192    query: ['first', 'second']
193});
194console.log(params.getAll('query'));
195// Prints [ 'first,second' ]
196```
1977、new URLSearchParams(iterable)
198```
199let params;
200
201// Using an array
202params = new URLSearchParams([
203    ['user', 'abc'],
204    ['query', 'first'],
205    ['query', 'second'],
206]);
207console.log(params.toString());
208// Prints 'user = abc & query = first&query = second'
209```
2108、has(name: string): boolean
211```
212console.log(params.has('bar')); // =>true
213```
2149、set(name: string, value string): void
215```
216params.set('baz', 3);
217```
21810、sort(): void
219```
220params .sort();
221```
22211、toString(): string
223```
224console.log(params .toString()); // =>bar=2&baz=3&foo=1'
225```
22612、keys(): iterableIterator\<string>
227```
228for(var key of params.keys()) {
229  console.log(key);
230} // =>bar  baz  foo
231```
23213、values(): iterableIterator\<string>
233```
234for(var value of params.values()) {
235  console.log(value);
236} // =>2  3  1
237```
23814、append(name: string, value: string): void
239```
240params.append('foo', 3); // =>bar=2&baz=3&foo=1&foo=3
241```
24215、delete(name: string): void
243```
244params.delete('baz'); // => bar=2&foo=1&foo=3
245```
24616、get(name: string): string
247```
248params.get('foo'); // => 1
249```
25017、getAll(name: string): string[]
251```
252params.getAll('foo'); // =>[ '1', '3' ]
253```
25418、entries(): iterableIterator<[string, string]>
255```
256for(var pair of searchParams.entries()) {
257   console.log(pair[0]+ ', '+ pair[1]);
258} // => bar, 2   foo, 1  foo, 3
259```
26019、forEach(): void
261```
262url.searchParams.forEach((value, name, searchParams) => {
263  console.log(name, value, url.searchParams === searchParams);
264});
265// => foo 1 true
266// => bar 2 true
267```
26820、urlSearchParams[Symbol.iterator] ()
269```
270const params = new URLSearchParams('foo=bar&xyz=baz');
271for (const [name, value] of params) {
272    console.log(name, value);
273}
274// Prints:
275// foo bar
276// xyz bar
277```
278
279
28021、URI​(str: string)
281```
282let gaogao = new Uri.URI('http://gg:gaogao@www.baidu.com:99/path/path?query#fagment');
283```
28422、scheme
285```
286let gaogao = new Uri.URI('http://gg:gaogao@www.baidu.com:99/path/path?query#fagment');
287gaogao.scheme        // => "http";
288```
28923、authority
290```
291let gaogao = new Uri.URI('http://gg:gaogao@www.baidu.com:99/path/path?query#fagment');
292gaogao.authority     // => "gg:gaogao@www.baidu.com:99";
293```
29424、ssp
295```
296let gaogao = new Uri.URI('http://gg:gaogao@www.baidu.com:99/path/path?query#fagment');
297gaogao.ssp "         // => gg:gaogao@www.baidu.com:99/path/path?query";
298```
29925、userinfo
300```
301let gaogao = new Uri.URI('http://gg:gaogao@www.baidu.com:99/path/path?query#fagment');
302gaogao.userinfo      // => "gg:gaogao";
303```
30426、host
305```
306let gaogao = new Uri.URI('http://gg:gaogao@www.baidu.com:99/path/path?query#fagment');
307gaogao.host          // => "www.baidu.com";
308```
30927、port
310```
311let gaogao = new Uri.URI('http://gg:gaogao@www.baidu.com:99/path/path?query#fagment');
312gaogao.port          // => "99";
313```
31428、query
315```
316let gaogao = new Uri.URI('http://gg:gaogao@www.baidu.com:99/path/path?query#fagment');
317gaogao.query         // => "query";
318```
31929、fragment
320```
321let gaogao = new Uri.URI('http://gg:gaogao@www.baidu.com:99/path/path?query#fagment');
322gaogao.fragment      // => "fagment";
323```
32430、path
325```
326let gaogao = new Uri.URI('http://gg:gaogao@www.baidu.com:99/path/path?query#fagment');
327gaogao.path          // => "/path/path";
328```
32931、equals(ob: Object)
330```
331let gaogao = new Uri.URI('http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/path1?query#fagment');
332let gaogao1 = gaogao;
333let res = gaogao.equals(gaogao1);
334console.log(res);      // => true;
335```
33632、normalize​()
337```
338let gaogao = new Uri.URI('http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/path/66./../././mm/.././path1?query#fagment');
339let res = gaogao.normalize();
340console.log(res.path);        // => "/path/path1"
341console.log(res.toString());  // => "http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/path/path1?query#fagment"
342```
34333、checkIsAbsolute​()
344```
345let gaogao = new Uri.URI('f/tp://username:password@www.baidu.com:88/path?query#fagment');
346let res = gaogao.checkIsAbsolute();
347console.log(res);              //=> false;
348```
34934、toString()
350```
351let gaogao = new Uri.URI('http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/../../path/.././../aa/bb/cc?query#fagment');
352let res = gaogao.toString();
353console.log(res.toString());     // => 'http://gg:gaogao@[1:0:0:1:2:1:2:1]:99/../../path/.././../aa/bb/cc?query#fagment';
354```
355
356
35735、ConvertXml()
358```
359var convertml = new convertXml.ConvertXml();
360```
36136、convert(xml: string, options: Object)
362```
363var result = convertml.convert(xml, {compact: false, spaces: 4});
364```
36537、new XmlSerializer(buffer: ArrayBuffer | DataView, encoding?: string)
366```
367
368var arrayBuffer = new ArrayBuffer(1024);
369var bufView = new DataView(arrayBuffer);
370var thatSer = new xml.XmlSerializer(bufView);
371```
37238、setDeclaration():void
373```
374var thatSer = new xml.XmlSerializer(bufView);
375thatSer.setDeclaration() // => <?xml version="1.0" encoding="utf-8"?>;
376```
37739、setCommnet(text: string):void
378```
379var thatSer = new xml.XmlSerializer(bufView);
380thatSer.setCommnet("Hello, World!"); // => <!--Hello, World!-->;
381```
38240、setCData(text: string) :void
383```
384var thatSer = new xml.XmlSerializer(bufView);
385thatSer.setDocType('root SYSTEM "http://www.test.org/test.dtd"'); // => <![CDATA[root SYSTEM \“http://www.test.org/test.dtd\”]]>
386```
38741、setDocType(text: string):void
388```
389var thatSer = new xml.XmlSerializer(bufView);
390thatSer.setDocType("foo"); // => <!DOCTYPE foo>
391```
39242、setNamespace(prefix: string, namespace: string): void
39343、startElement(name: string): void
39444、setAttributes(name: string, value: string): void
39545、endElement(): void
39646、setText(text: string): void
397```
398var thatSer = new xml.XmlSerializer(bufView);
399thatSer.setNamespace("h", "http://www.w3.org/TR/html4/");
400thatSer.startElement("table");
401thatSer.setAttributes("importance", "high");
402thatSer.setText("Happy");
403endElement(); // => <h:table importance="high" xmlns:h="http://www.w3.org/TR/html4/">Happy</h:table>
404```
40547、addEmptyElement(name: string): void
406```
407var thatSer = new xml.XmlSerializer(bufView);
408thatSer.addEmptyElement("b"); // => <b/>
409```
41048、new (buffer: ArrayBuffer | DataView, encoding?: string)
411```
412var strXml =
413            '<?xml version="1.0" encoding="utf-8"?>' +
414            '<note importance="high" logged="true">' +
415            '    <title>Happy</title>' +
416            '</note>';
417var arrayBuffer = new ArrayBuffer(strXml.length*2);
418var bufView = new Uint8Array(arrayBuffer);
419var strLen = strXml.length;
420for (var i = 0; i < strLen; ++i) {
421    bufView[i] = strXml.charCodeAt(i);//设置arraybuffer 方式
422}
423var that = new xml.XmlPullParser(arrayBuffer);
424
425```
42649、parse(option: ParseOptions): void
427```
428var strXml =
429            '<?xml version="1.0" encoding="utf-8"?>' +
430            '<note importance="high" logged="true">' +
431            '    <title>Happy</title>' +
432            '</note>';
433var arrayBuffer = new ArrayBuffer(strXml.length*2);
434var bufView = new Uint8Array(arrayBuffer);
435var strLen = strXml.length;
436for (var i = 0; i < strLen; ++i) {
437    bufView[i] = strXml.charCodeAt(i);
438}
439var that = new xml.XmlPullParser(arrayBuffer);
440var arrTag = {};
441arrTag[0] = '132';
442var i = 1;
443function func(key, value){
444    arrTag[i] = 'key:'+key+' value:'+ value.getDepth();
445    i++;
446    return true;
447}
448var options = {supportDoctype:true, ignoreNameSpace:true, tokenValueCallbackFunction:func}
449that.parse(options);
450```
451## 相关仓
452[js_api_module子系统](base/compileruntime/js_api_module/readme.md)
453
454### 许可证
455
456URL在[Mozilla许可证](https://www.mozilla.org/en-US/MPL/)下可用,说明文档详见[说明文档](https://gitee.com/openharmony/js_api_module/blob/master/mozilla_docs.txt)。有关完整的许可证文本,有关完整的许可证文本,请参见[许可证](https://gitee.com/openharmony/js_api_module/blob/master/LICENSE)