ソースを参照

Работа над XmlParser

Book Pauk 2 年 前
コミット
04a8ba8426
1 ファイル変更14 行追加3 行削除
  1. 14 3
      server/core/xml/XmlParser.js

+ 14 - 3
server/core/xml/XmlParser.js

@@ -455,6 +455,8 @@ class XmlParser extends NodeBase {
             throw new Error('JSON parse error: root element must be array');
 
         this.rawNodes = parsed;
+
+        return this;
     }
 
     toString(options = {}) {
@@ -641,9 +643,15 @@ class XmlParser extends NodeBase {
         });
 
         this.rawNodes = parsed;
+
+        return this;
     }
 
-    toObject() {
+    toObject(options = {}) {
+        const {
+            compactText = false
+        } = options;
+
         const nodesToObject = (nodes) => {
             const result = {};
 
@@ -663,8 +671,9 @@ class XmlParser extends NodeBase {
                     if (node.value) {
                         Object.assign(newNode, nodesToObject(node.value));
 
-                        //схлопывание узла до строки
-                        if (!Array.isArray(newNode)
+                        //схлопывание текстового узла до string
+                        if (compactText
+                            && !Array.isArray(newNode)
                             && Object.prototype.hasOwnProperty.call(newNode, '*TEXT')
                             && Object.keys(newNode).length === 1) {
                             newNode = newNode['*TEXT'];
@@ -736,6 +745,8 @@ class XmlParser extends NodeBase {
         };
 
         this.rawNodes = objectToNodes(xmlObject);
+
+        return this;
     }
 }