docxmlater 0.28.1 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +330 -4
- package/dist/core/Document.d.ts +66 -28
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +590 -90
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentGenerator.d.ts +15 -13
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +74 -13
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +40 -13
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +800 -316
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts +2 -1
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/elements/Bookmark.d.ts +1 -0
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js +1 -1
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts +1 -0
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +23 -0
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/ImageManager.d.ts +2 -0
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +22 -0
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.d.ts +10 -0
- package/dist/elements/ImageRun.d.ts.map +1 -0
- package/dist/elements/ImageRun.js +23 -0
- package/dist/elements/ImageRun.js.map +1 -0
- package/dist/elements/Paragraph.d.ts +16 -1
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +146 -2
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/Run.d.ts +4 -0
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +27 -1
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +3 -8
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts +32 -0
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -0
- package/dist/elements/StructuredDocumentTag.js +94 -0
- package/dist/elements/StructuredDocumentTag.js.map +1 -0
- package/dist/elements/Table.d.ts +24 -0
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +177 -3
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts +33 -0
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js +129 -1
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/formatting/AbstractNumbering.d.ts +1 -0
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +30 -0
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts +1 -0
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +16 -0
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts +1 -0
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +59 -0
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts +11 -0
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js +92 -0
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts +2 -0
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +49 -0
- package/dist/formatting/Style.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts +4 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +134 -31
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.d.ts +1 -0
- package/dist/xml/XMLParser.d.ts.map +1 -1
- package/dist/xml/XMLParser.js +75 -42
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.d.ts.map +1 -1
- package/dist/zip/ZipHandler.js +6 -1
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.d.ts.map +1 -1
- package/dist/zip/ZipReader.js +2 -2
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.d.ts.map +1 -1
- package/dist/zip/ZipWriter.js +13 -8
- package/dist/zip/ZipWriter.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAMA,+CAA8C;AAArC,wGAAA,UAAU,OAAA;AACnB,6CAA4C;AAAnC,sGAAA,SAAS,OAAA;AAClB,6CAA4C;AAAnC,sGAAA,SAAS,OAAA;AAGlB,qCAQqB;AAFnB,4GAAA,mBAAmB,OAAA;AACnB,mGAAA,UAAU,OAAA;AAIZ,uCAOsB;AANpB,mGAAA,SAAS,OAAA;AACT,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAChB,+GAAA,qBAAqB,OAAA;AACrB,kHAAA,wBAAwB,OAAA;AACxB,4GAAA,kBAAkB,OAAA;AAIpB,iDAoB4B;AAnB1B,mHAAA,qBAAqB,OAAA;AACrB,0GAAA,YAAY,OAAA;AACZ,2GAAA,aAAa,OAAA;AACb,8GAAA,gBAAgB,OAAA;AAChB,2GAAA,aAAa,OAAA;AACb,2GAAA,aAAa,OAAA;AACb,2GAAA,aAAa,OAAA;AACb,8GAAA,gBAAgB,OAAA;AAChB,iHAAA,mBAAmB,OAAA;AACnB,2GAAA,aAAa,OAAA;AACb,+GAAA,iBAAiB,OAAA;AACjB,8GAAA,gBAAgB,OAAA;AAChB,oHAAA,sBAAsB,OAAA;AACtB,gHAAA,kBAAkB,OAAA;AAClB,0GAAA,YAAY,OAAA;AACZ,6GAAA,eAAe,OAAA;AACf,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AAKjB,mEAQqC;AAPnC,iIAAA,0BAA0B,OAAA;AAC1B,6HAAA,sBAAsB,OAAA;AACtB,iHAAA,UAAU,OAAA;AACV,qHAAA,cAAc,OAAA;AAOhB,uCAiCuB;AAhCrB,qGAAA,YAAY,OAAA;AACZ,8FAAA,KAAK,OAAA;AACL,mGAAA,UAAU,OAAA;AACV,uGAAA,cAAc,OAAA;AACd,sGAAA,aAAa,OAAA;AACb,sGAAA,aAAa,OAAA;AACb,kGAAA,SAAS,OAAA;AACT,oGAAA,WAAW,OAAA;AACX,oGAAA,WAAW,OAAA;AACX,qGAAA,YAAY,OAAA;AACZ,iGAAA,QAAQ,OAAA;AACR,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,uGAAA,cAAc,OAAA;AACd,mGAAA,UAAU,OAAA;AACV,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,uGAAA,cAAc,OAAA;AACd,mGAAA,UAAU,OAAA;AACV,uGAAA,cAAc,OAAA;AACd,kGAAA,SAAS,OAAA;AACT,iGAAA,QAAQ,OAAA;AACR,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AACV,qGAAA,YAAY,OAAA;AACZ,uGAAA,cAAc,OAAA;AACd,sGAAA,aAAa,OAAA;AACb,mGAAA,UAAU,OAAA;AACV,uGAAA,cAAc,OAAA;AAIhB,4CAA8F;AAArF,oGAAA,QAAQ,OAAA;AACjB,oDAA6F;AAApF,4GAAA,YAAY,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AACvC,kEAAiE;AAAxD,0HAAA,mBAAmB,OAAA;AAC5B,wDAAmE;AAA1D,gHAAA,cAAc,OAAA;AACvB,8DAA6D;AAApD,sHAAA,iBAAiB,OAAA;AAC1B,8DAA0F;AAAjF,sHAAA,iBAAiB,OAAA;AAG1B,4CAAuE;AAA9D,8FAAA,KAAK,OAAA;AACd,4DAA6E;AAApE,8GAAA,aAAa,OAAA;AACtB,8DAKqC;AAJnC,gHAAA,cAAc,OAAA;AAKhB,oEAGwC;AAFtC,sHAAA,iBAAiB,OAAA;AAGnB,oEAGwC;AAFtC,sHAAA,iBAAiB,OAAA;AAGnB,kEAAiE;AAAxD,oHAAA,gBAAgB,OAAA;AAGzB,kDAA0F;AAAjF,sGAAA,SAAS,OAAA;AAClB,sCAAoD;AAA3C,0FAAA,GAAG,OAAA;AACZ,8CAU4B;AAT1B,kGAAA,OAAO,OAAA;AAUT,0CAO0B;AANxB,8FAAA,KAAK,OAAA;AAOP,gDAA8D;AAArD,oGAAA,QAAQ,OAAA;AACjB,kDAQ8B;AAP5B,sGAAA,SAAS,OAAA;AAQX,0CAAuE;AAA9D,8FAAA,KAAK,OAAA;AACd,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AACrB,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AACjB,sDAA4E;AAAnE,0GAAA,WAAW,OAAA;AACpB,0CAAqE;AAA5D,8FAAA,KAAK,OAAA;AACd,4CAAyE;AAAhE,gGAAA,MAAM,OAAA;AACf,4CAAyE;AAAhE,gGAAA,MAAM,OAAA;AACf,sEAAqE;AAA5D,0HAAA,mBAAmB,OAAA;AAC5B,kDAAsE;AAA7D,sGAAA,SAAS,OAAA;AAClB,8DAA4E;AAAnE,kHAAA,eAAe,OAAA;AACxB,4EAA2E;AAAlE,gIAAA,sBAAsB,OAAA;AAC/B,gDAAmE;AAA1D,oGAAA,QAAQ,OAAA;AACjB,8DAA6D;AAApD,kHAAA,eAAe,OAAA;AACxB,0EAAiH;AAAxG,8HAAA,qBAAqB,OAAA;AAC9B,gDAAiF;AAAxE,oGAAA,QAAQ,OAAA;AACjB,8DAA6D;AAApD,kHAAA,eAAe,OAAA;AACxB,8CAAgE;AAAvD,kGAAA,OAAO,OAAA;AAChB,4DAA2D;AAAlD,gHAAA,cAAc,OAAA;AACvB,gDAAiF;AAAxE,oGAAA,QAAQ,OAAA;AAAE,wGAAA,YAAY,OAAA;AAC/B,8DAA6D;AAApD,kHAAA,eAAe,OAAA;AACxB,8CAA6E;AAApE,kGAAA,OAAO,OAAA;AAAE,sGAAA,WAAW,OAAA;AAC7B,4DAA2D;AAAlD,gHAAA,cAAc,OAAA;AAGvB,+CAA0D;AAAjD,wGAAA,UAAU,OAAA;AACnB,6CAKyB;AAJvB,sGAAA,SAAS,OAAA;AAOX,yCASwB;AAPtB,kGAAA,QAAQ,OAAA;AAER,uGAAA,aAAa,OAAA;AACb,sGAAA,YAAY,OAAA;AACZ,0GAAA,gBAAgB,OAAA;AAChB,uGAAA,aAAa,OAAA;AACb,4GAAA,kBAAkB,OAAA;AAIpB,uDAAqF;AAA5E,wGAAA,OAAO,OAAA;AAAE,wGAAA,OAAO,OAAA;AAAE,0GAAA,SAAS,OAAA;AAAE,gHAAA,eAAe,OAAA;AAGrD,6CAA4C;AAAnC,gGAAA,MAAM,OAAA"}
|
package/dist/xml/XMLBuilder.d.ts
CHANGED
|
@@ -16,9 +16,12 @@ export declare class XMLBuilder {
|
|
|
16
16
|
static escapeXmlText(text: string): string;
|
|
17
17
|
static escapeXmlAttribute(value: string): string;
|
|
18
18
|
static unescapeXml(text: string): string;
|
|
19
|
+
static sanitizeXmlContent(text: string): string;
|
|
19
20
|
static createNamespaces(): Record<string, string>;
|
|
20
21
|
static w(name: string, attributes?: Record<string, string | number | boolean | undefined>, children?: (XMLElement | string)[]): XMLElement;
|
|
21
22
|
static wSelf(name: string, attributes?: Record<string, string | number | boolean | undefined>): XMLElement;
|
|
22
|
-
static createDocument(bodyContent: XMLElement[]): string;
|
|
23
|
+
static createDocument(bodyContent: XMLElement[], namespaces?: Record<string, string>): string;
|
|
24
|
+
static buildObject(obj: any, rootName: string): string;
|
|
25
|
+
private static objectToElement;
|
|
23
26
|
}
|
|
24
27
|
//# sourceMappingURL=XMLBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XMLBuilder.d.ts","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAKD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAA+B;IAS/C,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAClE,QAAQ,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,GACjC,UAAU;
|
|
1
|
+
{"version":3,"file":"XMLBuilder.d.ts","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAKD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAA+B;IAS/C,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAClE,QAAQ,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,GACjC,UAAU;IAgBb,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GACjE,UAAU;IAuBb,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAU9B,KAAK,CAAC,kBAAkB,UAAQ,GAAG,MAAM;IAczC,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,eAAe;IA+DvB,OAAO,CAAC,SAAS;IAajB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAU1C,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAchD,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAmBxC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAiB/C,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAoCjD,MAAM,CAAC,CAAC,CACN,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAClE,QAAQ,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,GACjC,UAAU;IAcb,MAAM,CAAC,KAAK,CACV,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GACjE,UAAU;IAab,MAAM,CAAC,cAAc,CACnB,WAAW,EAAE,UAAU,EAAE,EACzB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACtC,MAAM;IAgBT,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiBtD,OAAO,CAAC,MAAM,CAAC,eAAe;CAyD/B"}
|
package/dist/xml/XMLBuilder.js
CHANGED
|
@@ -12,6 +12,10 @@ class XMLBuilder {
|
|
|
12
12
|
return this;
|
|
13
13
|
}
|
|
14
14
|
selfClosingElement(name, attributes) {
|
|
15
|
+
if (name === 'w:t' || name === 't') {
|
|
16
|
+
throw new Error('Text elements (<w:t>) cannot be self-closing per ECMA-376. ' +
|
|
17
|
+
'Use element() with empty text content instead: XMLBuilder.w("t", attrs, [""])');
|
|
18
|
+
}
|
|
15
19
|
this.elements.push({
|
|
16
20
|
name,
|
|
17
21
|
attributes,
|
|
@@ -24,7 +28,7 @@ class XMLBuilder {
|
|
|
24
28
|
return this;
|
|
25
29
|
}
|
|
26
30
|
build(includeDeclaration = false) {
|
|
27
|
-
let xml =
|
|
31
|
+
let xml = "";
|
|
28
32
|
if (includeDeclaration) {
|
|
29
33
|
xml += '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n';
|
|
30
34
|
}
|
|
@@ -32,9 +36,9 @@ class XMLBuilder {
|
|
|
32
36
|
return xml;
|
|
33
37
|
}
|
|
34
38
|
elementsToString(elements) {
|
|
35
|
-
let xml =
|
|
39
|
+
let xml = "";
|
|
36
40
|
for (const element of elements) {
|
|
37
|
-
if (typeof element ===
|
|
41
|
+
if (typeof element === "string") {
|
|
38
42
|
xml += this.escapeXml(element);
|
|
39
43
|
}
|
|
40
44
|
else {
|
|
@@ -49,20 +53,38 @@ class XMLBuilder {
|
|
|
49
53
|
for (const [key, value] of Object.entries(element.attributes)) {
|
|
50
54
|
if (value !== undefined && value !== null && value !== false) {
|
|
51
55
|
const attrValue = value === true ? key : String(value);
|
|
52
|
-
xml += ` ${key}="${
|
|
56
|
+
xml += ` ${key}="${XMLBuilder.escapeXmlAttribute(attrValue)}"`;
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
59
|
}
|
|
56
60
|
if (element.selfClosing) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
const CANNOT_SELF_CLOSE = [
|
|
62
|
+
"w:t",
|
|
63
|
+
"w:r",
|
|
64
|
+
"w:p",
|
|
65
|
+
"w:tbl",
|
|
66
|
+
"w:tr",
|
|
67
|
+
"w:tc",
|
|
68
|
+
"w:body",
|
|
69
|
+
"w:document",
|
|
70
|
+
"w:hyperlink",
|
|
71
|
+
"w:sdt",
|
|
72
|
+
"w:sdtContent",
|
|
73
|
+
"w:sdtPr",
|
|
74
|
+
"w:pPr",
|
|
75
|
+
"w:rPr",
|
|
76
|
+
"w:sectPr",
|
|
77
|
+
"w:bookmarkStart",
|
|
78
|
+
"w:bookmarkEnd",
|
|
79
|
+
];
|
|
80
|
+
if (CANNOT_SELF_CLOSE.includes(element.name)) {
|
|
81
|
+
xml += "></" + element.name + ">";
|
|
82
|
+
return xml;
|
|
61
83
|
}
|
|
62
|
-
xml +=
|
|
84
|
+
xml += "/>";
|
|
63
85
|
return xml;
|
|
64
86
|
}
|
|
65
|
-
xml +=
|
|
87
|
+
xml += ">";
|
|
66
88
|
if (element.children && element.children.length > 0) {
|
|
67
89
|
xml += this.elementsToString(element.children);
|
|
68
90
|
}
|
|
@@ -70,37 +92,54 @@ class XMLBuilder {
|
|
|
70
92
|
return xml;
|
|
71
93
|
}
|
|
72
94
|
escapeXml(text) {
|
|
73
|
-
return XMLBuilder.
|
|
95
|
+
return XMLBuilder.escapeXmlText(text);
|
|
74
96
|
}
|
|
75
97
|
static escapeXmlText(text) {
|
|
76
|
-
return text
|
|
77
|
-
.replace(/&/g, '&')
|
|
78
|
-
.replace(/</g, '<')
|
|
79
|
-
.replace(/>/g, '>');
|
|
98
|
+
return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
80
99
|
}
|
|
81
100
|
static escapeXmlAttribute(value) {
|
|
82
101
|
return value
|
|
83
|
-
.replace(/&/g,
|
|
84
|
-
.replace(/</g,
|
|
85
|
-
.replace(/>/g,
|
|
86
|
-
.replace(/"/g,
|
|
87
|
-
.replace(/'/g,
|
|
102
|
+
.replace(/&/g, "&")
|
|
103
|
+
.replace(/</g, "<")
|
|
104
|
+
.replace(/>/g, ">")
|
|
105
|
+
.replace(/"/g, """)
|
|
106
|
+
.replace(/'/g, "'");
|
|
88
107
|
}
|
|
89
108
|
static unescapeXml(text) {
|
|
90
109
|
return text
|
|
91
|
-
.replace(/</g,
|
|
92
|
-
.replace(/>/g,
|
|
110
|
+
.replace(/</g, "<")
|
|
111
|
+
.replace(/>/g, ">")
|
|
93
112
|
.replace(/"/g, '"')
|
|
94
113
|
.replace(/'/g, "'")
|
|
95
|
-
.replace(/&/g,
|
|
114
|
+
.replace(/&/g, "&");
|
|
115
|
+
}
|
|
116
|
+
static sanitizeXmlContent(text) {
|
|
117
|
+
return (text
|
|
118
|
+
.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, "")
|
|
119
|
+
.replace(/\]\]>/g, "]]>")
|
|
120
|
+
.replace(/&/g, "&")
|
|
121
|
+
.replace(/</g, "<")
|
|
122
|
+
.replace(/>/g, ">"));
|
|
96
123
|
}
|
|
97
124
|
static createNamespaces() {
|
|
98
125
|
return {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
126
|
+
"xmlns:w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
|
|
127
|
+
"xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
|
|
128
|
+
"xmlns:wp": "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",
|
|
129
|
+
"xmlns:a": "http://schemas.openxmlformats.org/drawingml/2006/main",
|
|
130
|
+
"xmlns:pic": "http://schemas.openxmlformats.org/drawingml/2006/picture",
|
|
131
|
+
"xmlns:w14": "http://schemas.microsoft.com/office/word/2010/wordml",
|
|
132
|
+
"xmlns:wpc": "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas",
|
|
133
|
+
"xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006",
|
|
134
|
+
"xmlns:o": "urn:schemas-microsoft-com:office:office",
|
|
135
|
+
"xmlns:v": "urn:schemas-microsoft-com:vml",
|
|
136
|
+
"xmlns:wp14": "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing",
|
|
137
|
+
"xmlns:w10": "urn:schemas-microsoft-com:office:word",
|
|
138
|
+
"xmlns:w15": "http://schemas.microsoft.com/office/word/2012/wordml",
|
|
139
|
+
"xmlns:wpg": "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup",
|
|
140
|
+
"xmlns:wpi": "http://schemas.microsoft.com/office/word/2010/wordprocessingInk",
|
|
141
|
+
"xmlns:wne": "http://schemas.microsoft.com/office/word/2006/wordml",
|
|
142
|
+
"xmlns:wps": "http://schemas.microsoft.com/office/word/2010/wordprocessingShape",
|
|
104
143
|
};
|
|
105
144
|
}
|
|
106
145
|
static w(name, attributes, children) {
|
|
@@ -117,13 +156,77 @@ class XMLBuilder {
|
|
|
117
156
|
selfClosing: true,
|
|
118
157
|
};
|
|
119
158
|
}
|
|
120
|
-
static createDocument(bodyContent) {
|
|
159
|
+
static createDocument(bodyContent, namespaces = {}) {
|
|
121
160
|
const builder = new XMLBuilder();
|
|
122
|
-
|
|
123
|
-
|
|
161
|
+
const allNamespaces = { ...XMLBuilder.createNamespaces(), ...namespaces };
|
|
162
|
+
builder.element("w:document", allNamespaces, [
|
|
163
|
+
XMLBuilder.w("body", undefined, bodyContent),
|
|
124
164
|
]);
|
|
125
165
|
return builder.build(true);
|
|
126
166
|
}
|
|
167
|
+
static buildObject(obj, rootName) {
|
|
168
|
+
const builder = new XMLBuilder();
|
|
169
|
+
const element = XMLBuilder.objectToElement(obj, rootName);
|
|
170
|
+
if (element) {
|
|
171
|
+
if (typeof element === "string") {
|
|
172
|
+
builder.text(element);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
builder.elements.push(element);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return builder.build();
|
|
179
|
+
}
|
|
180
|
+
static objectToElement(obj, name) {
|
|
181
|
+
if (obj === null || obj === undefined) {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
if (typeof obj !== "object" || obj === null) {
|
|
185
|
+
return String(obj);
|
|
186
|
+
}
|
|
187
|
+
const attributes = {};
|
|
188
|
+
const children = [];
|
|
189
|
+
if (obj["#text"] && Object.keys(obj).length === 1) {
|
|
190
|
+
return String(obj["#text"]);
|
|
191
|
+
}
|
|
192
|
+
for (const key in obj) {
|
|
193
|
+
if (key.startsWith("@_")) {
|
|
194
|
+
attributes[key.substring(2)] = obj[key];
|
|
195
|
+
}
|
|
196
|
+
else if (key === "#text") {
|
|
197
|
+
children.push(String(obj[key]));
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
const childObj = obj[key];
|
|
201
|
+
if (Array.isArray(childObj)) {
|
|
202
|
+
childObj.forEach((item) => {
|
|
203
|
+
const childElement = XMLBuilder.objectToElement(item, key);
|
|
204
|
+
if (childElement) {
|
|
205
|
+
children.push(childElement);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const childElement = XMLBuilder.objectToElement(childObj, key);
|
|
211
|
+
if (childElement) {
|
|
212
|
+
children.push(childElement);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
const element = {
|
|
218
|
+
name,
|
|
219
|
+
attributes,
|
|
220
|
+
children: children.length > 0 ? children : undefined,
|
|
221
|
+
};
|
|
222
|
+
if (!element.children || element.children.length === 0) {
|
|
223
|
+
const CANNOT_SELF_CLOSE = ["w:t", "w:p", "w:r", "w:document", "w:body"];
|
|
224
|
+
if (!CANNOT_SELF_CLOSE.includes(name)) {
|
|
225
|
+
element.selfClosing = true;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return element;
|
|
229
|
+
}
|
|
127
230
|
}
|
|
128
231
|
exports.XMLBuilder = XMLBuilder;
|
|
129
232
|
//# sourceMappingURL=XMLBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XMLBuilder.js","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":";;;AAkBA,MAAa,UAAU;IACb,QAAQ,GAA4B,EAAE,CAAC;IAS/C,OAAO,CACL,IAAY,EACZ,UAAkE,EAClE,QAAkC;QAElC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,IAAI;YACJ,UAAU;YACV,QAAQ;SACT,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;
|
|
1
|
+
{"version":3,"file":"XMLBuilder.js","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/xml/XMLParser.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare class XMLParser {
|
|
|
16
16
|
static extractElements(xml: string, tagName: string): string[];
|
|
17
17
|
static extractAttribute(xml: string, attributeName: string): string | undefined;
|
|
18
18
|
static hasSelfClosingTag(xml: string, tagName: string): boolean;
|
|
19
|
+
static hasBooleanProperty(xml: string, tagName: string): boolean;
|
|
19
20
|
static extractText(xml: string): string;
|
|
20
21
|
static validateSize(xml: string, maxSize?: number): void;
|
|
21
22
|
static extractBetweenTags(xml: string, startTag: string, endTag: string): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XMLParser.d.ts","sourceRoot":"","sources":["../../src/xml/XMLParser.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IAEnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAG1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAG9B,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAMD,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,eAAe,GACf,eAAe,EAAE,GACjB,IAAI,GACJ,SAAS,CAAC;AAKd,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC/B;AAcD,qBAAa,SAAS;IAMpB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAyB1C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"XMLParser.d.ts","sourceRoot":"","sources":["../../src/xml/XMLParser.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IAEnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAG1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAG9B,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAMD,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,eAAe,GACf,eAAe,EAAE,GACjB,IAAI,GACJ,SAAS,CAAC;AAKd,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC/B;AAcD,qBAAa,SAAS;IAMpB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAyB1C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAyG9D,MAAM,CAAC,gBAAgB,CACrB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS;IAmBrB,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAoB/D,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAwBhE,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAkCvC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,IAAI;IAqB1E,MAAM,CAAC,kBAAkB,CACvB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS;IAkCrB,MAAM,CAAC,aAAa,CAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,GAC7B,eAAe;IA+BlB,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAiLnC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA6FvC,OAAO,CAAC,MAAM,CAAC,cAAc;IAuD7B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkC/B,OAAO,CAAC,MAAM,CAAC,UAAU;CAiB1B"}
|
package/dist/xml/XMLParser.js
CHANGED
|
@@ -3,35 +3,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.XMLParser = void 0;
|
|
4
4
|
class XMLParser {
|
|
5
5
|
static extractBody(docXml) {
|
|
6
|
-
const startTag =
|
|
7
|
-
const endTag =
|
|
6
|
+
const startTag = "<w:body";
|
|
7
|
+
const endTag = "</w:body>";
|
|
8
8
|
const startIdx = docXml.indexOf(startTag);
|
|
9
9
|
if (startIdx === -1)
|
|
10
|
-
return
|
|
11
|
-
const openEnd = docXml.indexOf(
|
|
10
|
+
return "";
|
|
11
|
+
const openEnd = docXml.indexOf(">", startIdx);
|
|
12
12
|
if (openEnd === -1)
|
|
13
|
-
return
|
|
13
|
+
return "";
|
|
14
14
|
const endIdx = docXml.indexOf(endTag, openEnd);
|
|
15
15
|
if (endIdx === -1)
|
|
16
|
-
return
|
|
16
|
+
return "";
|
|
17
17
|
return docXml.substring(openEnd + 1, endIdx);
|
|
18
18
|
}
|
|
19
19
|
static extractElements(xml, tagName) {
|
|
20
20
|
const elements = [];
|
|
21
21
|
const openTag = `<${tagName}`;
|
|
22
22
|
const closeTag = `</${tagName}>`;
|
|
23
|
-
const selfClosingEnd =
|
|
23
|
+
const selfClosingEnd = "/>";
|
|
24
24
|
let pos = 0;
|
|
25
25
|
while (pos < xml.length) {
|
|
26
26
|
const startIdx = xml.indexOf(openTag, pos);
|
|
27
27
|
if (startIdx === -1)
|
|
28
28
|
break;
|
|
29
29
|
const charAfterTag = xml[startIdx + openTag.length];
|
|
30
|
-
if (charAfterTag &&
|
|
30
|
+
if (charAfterTag &&
|
|
31
|
+
charAfterTag !== ">" &&
|
|
32
|
+
charAfterTag !== "/" &&
|
|
33
|
+
charAfterTag !== " " &&
|
|
34
|
+
charAfterTag !== "\t" &&
|
|
35
|
+
charAfterTag !== "\n" &&
|
|
36
|
+
charAfterTag !== "\r" &&
|
|
37
|
+
charAfterTag !== "=") {
|
|
31
38
|
pos = startIdx + openTag.length;
|
|
32
39
|
continue;
|
|
33
40
|
}
|
|
34
|
-
const openEnd = xml.indexOf(
|
|
41
|
+
const openEnd = xml.indexOf(">", startIdx);
|
|
35
42
|
if (openEnd === -1)
|
|
36
43
|
break;
|
|
37
44
|
if (xml.substring(openEnd - 1, openEnd + 1) === selfClosingEnd) {
|
|
@@ -50,7 +57,13 @@ class XMLParser {
|
|
|
50
57
|
break;
|
|
51
58
|
}
|
|
52
59
|
const charAfter = xml[candidateOpen + openTag.length];
|
|
53
|
-
if (charAfter &&
|
|
60
|
+
if (charAfter &&
|
|
61
|
+
charAfter !== ">" &&
|
|
62
|
+
charAfter !== "/" &&
|
|
63
|
+
charAfter !== " " &&
|
|
64
|
+
charAfter !== "\t" &&
|
|
65
|
+
charAfter !== "\n" &&
|
|
66
|
+
charAfter !== "\r") {
|
|
54
67
|
openSearchPos = candidateOpen + openTag.length;
|
|
55
68
|
continue;
|
|
56
69
|
}
|
|
@@ -95,16 +108,26 @@ class XMLParser {
|
|
|
95
108
|
static hasSelfClosingTag(xml, tagName) {
|
|
96
109
|
return xml.includes(`<${tagName}/>`) || xml.includes(`<${tagName} `);
|
|
97
110
|
}
|
|
111
|
+
static hasBooleanProperty(xml, tagName) {
|
|
112
|
+
if (xml.includes(`<${tagName} w:val="1"`) ||
|
|
113
|
+
xml.includes(`<${tagName} w:val="true"`)) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
if (xml.includes(`<${tagName}/>`)) {
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
98
121
|
static extractText(xml) {
|
|
99
122
|
const texts = [];
|
|
100
|
-
const openTag =
|
|
101
|
-
const closeTag =
|
|
123
|
+
const openTag = "<w:t";
|
|
124
|
+
const closeTag = "</w:t>";
|
|
102
125
|
let pos = 0;
|
|
103
126
|
while (pos < xml.length) {
|
|
104
127
|
const startIdx = xml.indexOf(openTag, pos);
|
|
105
128
|
if (startIdx === -1)
|
|
106
129
|
break;
|
|
107
|
-
const openEnd = xml.indexOf(
|
|
130
|
+
const openEnd = xml.indexOf(">", startIdx);
|
|
108
131
|
if (openEnd === -1)
|
|
109
132
|
break;
|
|
110
133
|
const closeIdx = xml.indexOf(closeTag, openEnd);
|
|
@@ -114,11 +137,13 @@ class XMLParser {
|
|
|
114
137
|
texts.push(text);
|
|
115
138
|
pos = closeIdx + closeTag.length;
|
|
116
139
|
}
|
|
117
|
-
return texts.join(
|
|
140
|
+
return texts.join("");
|
|
118
141
|
}
|
|
119
142
|
static validateSize(xml, maxSize = 10 * 1024 * 1024) {
|
|
120
143
|
if (xml.length > maxSize) {
|
|
121
|
-
throw new Error(`XML content too large for parsing (${(xml.length /
|
|
144
|
+
throw new Error(`XML content too large for parsing (${(xml.length /
|
|
145
|
+
1024 /
|
|
146
|
+
1024).toFixed(1)}MB). ` +
|
|
122
147
|
`Maximum allowed: ${(maxSize / 1024 / 1024).toFixed(0)}MB`);
|
|
123
148
|
}
|
|
124
149
|
}
|
|
@@ -126,7 +151,7 @@ class XMLParser {
|
|
|
126
151
|
const startIdx = xml.indexOf(startTag);
|
|
127
152
|
if (startIdx === -1)
|
|
128
153
|
return undefined;
|
|
129
|
-
const openEnd = xml.indexOf(
|
|
154
|
+
const openEnd = xml.indexOf(">", startIdx);
|
|
130
155
|
if (openEnd === -1)
|
|
131
156
|
return undefined;
|
|
132
157
|
const endIdx = xml.indexOf(endTag, openEnd);
|
|
@@ -137,15 +162,15 @@ class XMLParser {
|
|
|
137
162
|
static parseToObject(xml, options) {
|
|
138
163
|
const opts = {
|
|
139
164
|
ignoreAttributes: options?.ignoreAttributes ?? false,
|
|
140
|
-
attributeNamePrefix: options?.attributeNamePrefix ??
|
|
141
|
-
textNodeName: options?.textNodeName ??
|
|
165
|
+
attributeNamePrefix: options?.attributeNamePrefix ?? "@_",
|
|
166
|
+
textNodeName: options?.textNodeName ?? "#text",
|
|
142
167
|
ignoreNamespace: options?.ignoreNamespace ?? false,
|
|
143
168
|
parseAttributeValue: options?.parseAttributeValue ?? true,
|
|
144
169
|
trimValues: options?.trimValues ?? true,
|
|
145
170
|
alwaysArray: options?.alwaysArray ?? false,
|
|
146
171
|
};
|
|
147
172
|
XMLParser.validateSize(xml);
|
|
148
|
-
xml = xml.replace(/<\?xml[^>]*\?>\s*/g,
|
|
173
|
+
xml = xml.replace(/<\?xml[^>]*\?>\s*/g, "").trim();
|
|
149
174
|
if (!xml) {
|
|
150
175
|
return {};
|
|
151
176
|
}
|
|
@@ -153,33 +178,35 @@ class XMLParser {
|
|
|
153
178
|
return result.value;
|
|
154
179
|
}
|
|
155
180
|
static parseElementToObject(xml, startPos, options) {
|
|
156
|
-
const openTagStart = xml.indexOf(
|
|
181
|
+
const openTagStart = xml.indexOf("<", startPos);
|
|
157
182
|
if (openTagStart === -1) {
|
|
158
183
|
return { value: {}, endPos: xml.length };
|
|
159
184
|
}
|
|
160
|
-
if (xml.substring(openTagStart, openTagStart + 4) ===
|
|
161
|
-
const commentEnd = xml.indexOf(
|
|
185
|
+
if (xml.substring(openTagStart, openTagStart + 4) === "<!--") {
|
|
186
|
+
const commentEnd = xml.indexOf("-->", openTagStart + 4);
|
|
162
187
|
if (commentEnd !== -1) {
|
|
163
188
|
return XMLParser.parseElementToObject(xml, commentEnd + 3, options);
|
|
164
189
|
}
|
|
165
190
|
return { value: {}, endPos: xml.length };
|
|
166
191
|
}
|
|
167
|
-
const nameMatch = xml
|
|
192
|
+
const nameMatch = xml
|
|
193
|
+
.substring(openTagStart + 1)
|
|
194
|
+
.match(/^([a-zA-Z0-9:_-]+)/);
|
|
168
195
|
if (!nameMatch) {
|
|
169
196
|
return { value: {}, endPos: openTagStart + 1 };
|
|
170
197
|
}
|
|
171
|
-
const originalElementName = nameMatch[1] ||
|
|
198
|
+
const originalElementName = nameMatch[1] || "";
|
|
172
199
|
let elementName = originalElementName;
|
|
173
|
-
const tagHeaderEnd = xml.indexOf(
|
|
200
|
+
const tagHeaderEnd = xml.indexOf(">", openTagStart);
|
|
174
201
|
if (tagHeaderEnd === -1) {
|
|
175
202
|
return { value: {}, endPos: xml.length };
|
|
176
203
|
}
|
|
177
|
-
if (options.ignoreNamespace && elementName.includes(
|
|
178
|
-
elementName = elementName.split(
|
|
204
|
+
if (options.ignoreNamespace && elementName.includes(":")) {
|
|
205
|
+
elementName = elementName.split(":")[1] || elementName;
|
|
179
206
|
}
|
|
180
207
|
const tagHeader = xml.substring(openTagStart + 1 + originalElementName.length, tagHeaderEnd);
|
|
181
208
|
const attributes = XMLParser.extractAttributesFromTag(tagHeader, options);
|
|
182
|
-
const isSelfClosing = tagHeader.trim().endsWith(
|
|
209
|
+
const isSelfClosing = tagHeader.trim().endsWith("/") || xml[tagHeaderEnd - 1] === "/";
|
|
183
210
|
if (isSelfClosing) {
|
|
184
211
|
const elementValue = { ...attributes };
|
|
185
212
|
return {
|
|
@@ -198,10 +225,10 @@ class XMLParser {
|
|
|
198
225
|
}
|
|
199
226
|
const content = xml.substring(contentStart, closingTagPos);
|
|
200
227
|
const children = [];
|
|
201
|
-
let textContent =
|
|
228
|
+
let textContent = "";
|
|
202
229
|
let pos = 0;
|
|
203
230
|
while (pos < content.length) {
|
|
204
|
-
const nextTag = content.indexOf(
|
|
231
|
+
const nextTag = content.indexOf("<", pos);
|
|
205
232
|
if (nextTag === -1) {
|
|
206
233
|
const text = content.substring(pos);
|
|
207
234
|
if (text.trim()) {
|
|
@@ -233,7 +260,7 @@ class XMLParser {
|
|
|
233
260
|
}
|
|
234
261
|
if (textContent.trim()) {
|
|
235
262
|
const text = options.trimValues ? textContent.trim() : textContent;
|
|
236
|
-
if (typeof elementValue ===
|
|
263
|
+
if (typeof elementValue === "object" && !Array.isArray(elementValue)) {
|
|
237
264
|
if (Object.keys(elementValue).length === 0) {
|
|
238
265
|
elementValue = text;
|
|
239
266
|
}
|
|
@@ -244,14 +271,14 @@ class XMLParser {
|
|
|
244
271
|
}
|
|
245
272
|
if (children.length > 0) {
|
|
246
273
|
const coalescedChildren = XMLParser.coalesceChildren(children, options);
|
|
247
|
-
if (typeof elementValue ===
|
|
274
|
+
if (typeof elementValue === "object" && !Array.isArray(elementValue)) {
|
|
248
275
|
elementValue = { ...elementValue, ...coalescedChildren };
|
|
249
276
|
}
|
|
250
277
|
else {
|
|
251
278
|
elementValue = coalescedChildren;
|
|
252
279
|
}
|
|
253
280
|
}
|
|
254
|
-
if (typeof elementValue ===
|
|
281
|
+
if (typeof elementValue === "object" &&
|
|
255
282
|
!Array.isArray(elementValue) &&
|
|
256
283
|
Object.keys(elementValue).length === 0) {
|
|
257
284
|
elementValue = {};
|
|
@@ -277,7 +304,7 @@ class XMLParser {
|
|
|
277
304
|
break;
|
|
278
305
|
}
|
|
279
306
|
}
|
|
280
|
-
if (pos >= tagHeader.length || tagHeader[pos] ===
|
|
307
|
+
if (pos >= tagHeader.length || tagHeader[pos] === "/") {
|
|
281
308
|
break;
|
|
282
309
|
}
|
|
283
310
|
const nameStart = pos;
|
|
@@ -303,8 +330,9 @@ class XMLParser {
|
|
|
303
330
|
break;
|
|
304
331
|
}
|
|
305
332
|
}
|
|
306
|
-
let attrValue =
|
|
307
|
-
if (pos < tagHeader.length &&
|
|
333
|
+
let attrValue = "";
|
|
334
|
+
if (pos < tagHeader.length &&
|
|
335
|
+
(tagHeader[pos] === '"' || tagHeader[pos] === "'")) {
|
|
308
336
|
const quote = tagHeader[pos];
|
|
309
337
|
pos++;
|
|
310
338
|
const valueStart = pos;
|
|
@@ -314,8 +342,8 @@ class XMLParser {
|
|
|
314
342
|
attrValue = tagHeader.substring(valueStart, pos);
|
|
315
343
|
pos++;
|
|
316
344
|
}
|
|
317
|
-
if (options.ignoreNamespace && attrName.includes(
|
|
318
|
-
attrName = attrName.split(
|
|
345
|
+
if (options.ignoreNamespace && attrName.includes(":")) {
|
|
346
|
+
attrName = attrName.split(":")[1] || attrName;
|
|
319
347
|
}
|
|
320
348
|
const prefixedName = options.attributeNamePrefix + attrName;
|
|
321
349
|
attributes[prefixedName] = options.parseAttributeValue
|
|
@@ -338,11 +366,16 @@ class XMLParser {
|
|
|
338
366
|
let isRealOpen = false;
|
|
339
367
|
if (nextOpen !== -1 && nextOpen < nextClose) {
|
|
340
368
|
const charAfter = xml[nextOpen + openTag.length];
|
|
341
|
-
if (charAfter ===
|
|
369
|
+
if (charAfter === ">" ||
|
|
370
|
+
charAfter === " " ||
|
|
371
|
+
charAfter === "/" ||
|
|
372
|
+
charAfter === "\t" ||
|
|
373
|
+
charAfter === "\n" ||
|
|
374
|
+
charAfter === "\r") {
|
|
342
375
|
isRealOpen = true;
|
|
343
376
|
}
|
|
344
377
|
}
|
|
345
|
-
if (isRealOpen
|
|
378
|
+
if (isRealOpen) {
|
|
346
379
|
depth++;
|
|
347
380
|
pos = nextOpen + openTag.length;
|
|
348
381
|
}
|
|
@@ -377,9 +410,9 @@ class XMLParser {
|
|
|
377
410
|
return result;
|
|
378
411
|
}
|
|
379
412
|
static parseValue(value) {
|
|
380
|
-
if (value ===
|
|
413
|
+
if (value === "true")
|
|
381
414
|
return true;
|
|
382
|
-
if (value ===
|
|
415
|
+
if (value === "false")
|
|
383
416
|
return false;
|
|
384
417
|
if (/^-?\d+$/.test(value)) {
|
|
385
418
|
const num = parseInt(value, 10);
|