我正在寻找一种方法来解析包含可以通过javascript拾取的内联元素的字符串。一个例子。
给出以下可解析字符串:
"I have a <noun length="10" />
有没有办法轻松解析这个字符串并理解该字符串中有一个名为“noun”的对象,其中包含一个值为10的length属性?
答案 0 :(得分:0)
您需要确保您的字符串是格式良好的XML。在这种情况下,您需要确保存在文档元素。
如何将值包装在<doc>
元素中,然后解析并查询属性值的示例:
function parseSnippet(snippet, xpathExpression) {
var startDoc = "<doc>",
endDoc = "</doc>",
xml = startDoc + snippet + endDoc,
xmlDoc;
if (window.DOMParser) {
parser = new DOMParser();
xmlDoc = parser.parseFromString(xml, "text/xml");
} else // Internet Explorer
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(xml);
}
return xmlDoc;
}
var xmlDoc = parseSnippet('I have a <noun length="10" />');
var nounLength = document.evaluate('/doc/noun/@length',
xmlDoc,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue.textContent;
alert("length: " + nounLength);
下面是相同的概念,但是利用jQuery和parseXML()函数:
function parseSnippet(snippet) {
var startDoc = "<doc>",
endDoc = "</doc>",
xml = startDoc + snippet + endDoc,
xmlDoc = $.parseXML( xml );
return $( xmlDoc );
}
var $length = parseSnippet('I have a <noun length="10" />')
.find( "noun" ).attr("length");
console.log("length: "+ $length);
答案 1 :(得分:-1)
jquery会工作吗?
var a = $(string)
undefined
a.select("noun")
[
<noun attr="thing"></noun>
]
a.select("noun").attr("attr")
"thing"