如何确定字符串是否包含node.js中的XML?

时间:2015-11-10 22:40:58

标签: javascript node.js

给定一个任意字符串,如何确定它是否包含XML,并在node.js应用程序中解析它?

实施例

var s = 'hello world <hello type="greeting">world</hello>';

我尝试了nodexmlxml2js,但它们都要求整个字符串都是XML。

为清晰起见编辑:

理想情况下,我喜欢这样的东西:

var s = 'hello world <hello type="greeting">world</hello>';
var parsed = parse( s );
console.log( parsed );
{
  originalString: 'hello world <hello type="greeting">world</hello>',
  textOnly: 'hello world ',
  js: {
    hello: {
      type: 'greeting'
      '@text': 'world'
    }
  }
}

2 个答案:

答案 0 :(得分:0)

您可以尝试使用node-htmlparser

加载字符串
npm install htmlparser

由于其解析器对格式错误的部分HTML字符串感到宽容,因此您应该能够加载任何输入,然后检查特定的HTML标记,以确定解析的数据是否返回了DOM。

答案 1 :(得分:0)

我的建议是使用htmlparser2。的 Demo

gumbo-parser   : 34.9208 ms/file ± 21.4238
html-parser    : 24.8224 ms/file ± 15.8703
html5          : 419.597 ms/file ± 264.265
htmlparser     : 60.0722 ms/file ± 384.844
htmlparser2-dom: 12.0749 ms/file ± 6.49474
htmlparser2    : 7.49130 ms/file ± 5.74368
hubbub         : 30.4980 ms/file ± 16.4682
libxmljs       : 14.1338 ms/file ± 18.6541
parse5         : 22.0439 ms/file ± 15.3743
sax            : 49.6513 ms/file ± 26.6032

宽松的HTML / XML / RSS解析器。解析器可以处理流并提供回调接口。这是htmlparser模块的一个分支。主要区别在于它仅用于节点(它使用browserify在其他平台上运行)。

使用以下数据进行测试:

uuid

输出: 请参阅demo link输出

  

绩效评估:

id