如果使用nodejs不存在,如何在xml文件中动态插入结束标记?

时间:2016-12-02 11:00:11

标签: javascript jquery angularjs node.js

例如

<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>

在上面的xml </note>中,如何使用nodejs在xml中动态查找和添加错过的关闭标记。

2 个答案:

答案 0 :(得分:1)

为了解析和验证XML,需要schema definition (XSD)

有了这个,解析器就能够验证元素并告诉你是否有任何无效 - 缺失,拼写不正确等。

举个例子 - 没有XSD,您不会知道note是否可以包含任何其他子元素,例如date

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<date>2016-01-01</date>

而对于XSD,解析器将知道note元素将包含tofromheadingbody元素,之后我们期待收到note代码。

一旦您知道验证问题的位置 - 例如缺少结束标记 - 您就可以执行清理。

NodeJS有许多XML解析器选项,例如......

https://www.npmjs.com/package/libxml-xsd https://www.npmjs.com/package/jgexml

答案 1 :(得分:0)

你需要一些解析器来解析输入的脏HTML并清理它。 您可以使用充满脏HTML的字符串提供DOMPurify,它将返回一个包含干净HTML的字符串。 看看https://github.com/cure53/DOMPurify

var clean = DOMPurify.sanitize(dirtyHTML);

演示网站https://cure53.de/purify

您还可以浏览JSDOM和其他类似的DOM解析器库。