簡體   English   中英

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

[英]How can I determine if a string contains XML in 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'
    }
  }
}

您可以嘗試使用node-htmlparser加載字符串

npm install htmlparser

由於它的解析器對格式錯誤的部分HTML字符串很寬容,因此您應該能夠加載任何輸入,然后檢查特定的HTML標記,以確定解析的數據是否返回了DOM。

我的建議是使用htmlparser2 演示

npm install htmlparser2

寬松的HTML / XML / RSS解析器。 解析器可以處理流並提供回調接口。 這是htmlparser模塊的一個分支。 主要區別在於它僅用於節點(它使用browserify在其他平台上運行)。

測試了以下數據:

 var input = "Hello This is Bikram"+
    "<hello type="greeting">world</hello>"+
  "<head>"+
    "<meta charset="utf8"/>"+
    "<title>Page Title</title>"+
  "</head>"+
  "<body>"+
    "<a href="https://github.com/ForbesLindesay">"+
      "<img src="/static/forkme.png" alt="Fork me on GitHub">"+
    "</a>"+
"</body>"+
    "Sample answer for stackoverflow!!!"

輸出:請參閱演示鏈接以獲取輸出

績效評估:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM