[英]How can I determine if a string contains XML in node.js?
給定一個任意字符串,我如何確定它是否包含XML,並在node.js應用程序中解析它?
防爆。
var s = 'hello world <hello type="greeting">world</hello>';
我嘗試過nodexml和xml2js ,但是它們都要求整個字符串都是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.