Skip to content

Commit aa793d5

Browse files
committed
Fixed the issue of not applying to the name of XML elements the default namespace
1 parent efa5449 commit aa793d5

File tree

3 files changed

+49
-20
lines changed

3 files changed

+49
-20
lines changed

lib/helper/XML.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export interface XMLElement {
33
attributes?: any;
44
elements: XMLElement[];
55
name?: string;
6+
findIndex(name: string): number;
67
find(name: string): XMLElement;
78
findMany(name: string): XMLElement[];
89
}

lib/helper/XML.js

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,41 @@ function seekForNS(node, parentNS) {
2020
return ns;
2121
}
2222
function mutateNodeNS(node, parentNS) {
23-
if (parentNS === void 0) { parentNS = { _default: 'DAV' }; }
23+
if (parentNS === void 0) { parentNS = { _default: 'DAV:' }; }
2424
var nss = seekForNS(node, parentNS);
2525
if (node.name) {
2626
for (var ns in nss) {
27-
if (ns === '_default')
28-
continue;
29-
if (node.name.indexOf(ns + ':') === 0)
27+
if (ns === '_default' && node.name.indexOf(':') === -1) {
28+
node.name = nss[ns] + node.name;
29+
break;
30+
}
31+
else if (node.name.indexOf(ns + ':') === 0) {
3032
node.name = nss[ns] + node.name.substring((ns + ':').length);
33+
break;
34+
}
3135
}
3236
}
33-
node.find = function (name) {
34-
for (var index in node.elements)
37+
node.findIndex = function (name) {
38+
for (var index = 0; index < node.elements.length; ++index)
3539
if (node.elements[index].name && node.elements[index].name === name)
36-
return node.elements[index];
40+
return index;
41+
return -1;
42+
};
43+
node.find = function (name) {
44+
for (var _i = 0, _a = node.elements; _i < _a.length; _i++) {
45+
var element = _a[_i];
46+
if (element.name && element.name === name)
47+
return element;
48+
}
3749
throw Errors_1.Errors.XMLNotFound;
3850
};
3951
node.findMany = function (name) {
4052
var elements = [];
41-
for (var index in node.elements)
42-
if (node.elements[index].name && node.elements[index].name === name)
43-
elements.push(node.elements[index]);
53+
for (var _i = 0, _a = node.elements; _i < _a.length; _i++) {
54+
var element = _a[_i];
55+
if (element.name && element.name === name)
56+
elements.push(element);
57+
}
4458
return elements;
4559
};
4660
if (node.elements)

src/helper/XML.ts

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,35 +24,48 @@ function seekForNS(node : any, parentNS : any) : any
2424
return ns;
2525
}
2626

27-
function mutateNodeNS(node : any, parentNS = { _default: 'DAV' })
27+
function mutateNodeNS(node : any, parentNS = { _default: 'DAV:' })
2828
{
2929
const nss = seekForNS(node, parentNS);
3030

3131
if(node.name)
3232
{
3333
for(const ns in nss)
3434
{
35-
if(ns === '_default')
36-
continue;
37-
if(node.name.indexOf(ns + ':') === 0)
35+
if(ns === '_default' && node.name.indexOf(':') === -1)
36+
{
37+
node.name = nss[ns] + node.name;
38+
break;
39+
}
40+
else if(node.name.indexOf(ns + ':') === 0)
41+
{
3842
node.name = nss[ns] + node.name.substring((ns + ':').length);
43+
break;
44+
}
3945
}
4046
}
4147

42-
node.find = function(name : string) : XMLElement
48+
node.findIndex = function(name : string) : number
4349
{
44-
for(const index in node.elements)
50+
for(let index = 0; index < node.elements.length; ++index)
4551
if(node.elements[index].name && node.elements[index].name === name)
46-
return node.elements[index];
52+
return index;
53+
return -1;
54+
}
55+
node.find = function(name : string) : XMLElement
56+
{
57+
for(const element of node.elements)
58+
if(element.name && element.name === name)
59+
return element;
4760
throw Errors.XMLNotFound;
4861
}
4962
node.findMany = function(name : string) : XMLElement[]
5063
{
5164
const elements : XMLElement[] = [];
5265

53-
for(const index in node.elements)
54-
if(node.elements[index].name && node.elements[index].name === name)
55-
elements.push(node.elements[index]);
66+
for(const element of node.elements)
67+
if(element.name && element.name === name)
68+
elements.push(element);
5669

5770
return elements;
5871
}
@@ -70,6 +83,7 @@ export interface XMLElement
7083
elements : XMLElement[]
7184
name ?: string
7285

86+
findIndex(name : string) : number
7387
find(name : string) : XMLElement
7488
findMany(name : string) : XMLElement[]
7589
}

0 commit comments

Comments
 (0)