【问题标题】:How to parse content of xml element including element tags如何解析 xml 元素的内容,包括元素标签
【发布时间】:2021-07-01 15:47:59
【问题描述】:

在一个 XML 文件中,我试图解析一个元素的内容,包括其他元素的标签,而不仅仅是文本。我首先尝试用正则表达式来做,但在某处读到这是不可能或很难的。后来我尝试使用 DOMParser,但一直无法正确使用。 XML 文件如下所示:

<element1>
  <element2>
    ABC
  </element2>
  <element3>
    DEF
  </element3>
</element1>

我想要的输出是:

  <element2>
    ABC
  </element2>
  <element3>
    DEF
  </element3>

我正在尝试在 Javascript 中执行此操作,我的代码现在看起来像这样:

f = file.xml;
const content = fs.ReadFileSync(f, 'utf-8');
parser = new DOMParser();
xmlDoc= new parser().parseFromString(content, "text/xml");
result = xmlDoc.getElementsByTagName("element1")[0].childNodes[0].nodeValue;
return result;

我知道这只会返回 element1 中的文本,并且没有,但我不知道正确的代码是什么。

提前致谢!

【问题讨论】:

    标签: javascript xml parsing


    【解决方案1】:

    如果你们都想解析 XML 并将某些节点序列化回字符串,那么现在可以在客户端 JavaScript 平台以及 Node.js 上使用 Saxon-JS 和 XPath 3.1:

    var SaxonJS = require("saxon-js")
    
    const content = `<element1>
      <element2>
        ABC
      </element2>
      <element3>
        DEF
      </element3>
    </element1>`;
    
    const xmlDoc = SaxonJS.XPath.evaluate('parse-xml($content)', [], { params : { content : content } });
    
    var result = SaxonJS.XPath.evaluate('serialize(/element1/node())', xmlDoc);
    
    console.log(result);
    

        const content = `<element1>
          <element2>
            ABC
          </element2>
          <element3>
            DEF
          </element3>
        </element1>`;
        
        const xmlDoc = SaxonJS.XPath.evaluate('parse-xml($content)', [], { params : { content : content } });
        
        var result = SaxonJS.XPath.evaluate('serialize(/element1/node())', xmlDoc);
        
        console.log(result);
    &lt;script src="https://www.saxonica.com/saxon-js/documentation/SaxonJS/SaxonJS2.rt.js"&gt;&lt;/script&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-23
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      相关资源
      最近更新 更多