我有一个带有键和值对的XML文档,我想提取特定对的值。
我试过了:
var dat1 = xmlDoc.replace(/.*<d0>([^<]*)<\/d0>.*/, "$1");
上面给出了d0
中dat1
的值,但对于后续数据检索,它不会返回正确的值。
所以,第一个问题是:我可以使用什么方法通过使用regexp从XML文档中提取值(是的,我需要使用regedt)?
上面使用的替换方法是否正确?
更新: 我有以下xml字符串:
<dataVal><d0>123</d0><d1>456</d1></dataVal>
现在,内置的xml解析方法适用于我的mozilla和chrome,但对于IE,它无法解析字符串。例如,在IE上,如果我使用它,它将变为null:
var dat1 = xmlDoc.getElementsByTagName('d0')[0].firstChild.nodeValue
答案 0 :(得分:3)
不建议使用正则表达式解析XML。请改用XML解析器。使用jQuery的基本示例(显然需要jQuery):
var xml = "<music><album>Beethoven</album></music>";
var result = $(xml).find("album").text();
使用浏览器内置DOM的示例:
<!DOCTYPE html>
<html>
<body>
<script>
text = "<bookstore><book>";
text = text + "<title>Galapagos</title>";
text = text + "<author>Kurt Vonnegut</author>";
text = text + "<year>1985</year>";
text = text + "</book></bookstore>";
var xmlDoc, bookTitle;
if (window.DOMParser) {
parser = new DOMParser();
xmlDoc = parser.parseFromString(text, "text/xml");
} else // Internet Explorer
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(text);
}
bookTitle = xmlDoc.getElementsByTagName("title")[0].childNodes[0].data;
document.write(bookTitle);
</script>
</body>
</html>
关于为什么使用带有XML(和HTML)的正则表达式的强制性链接是一个坏主意:RegEx match open tags except XHTML self-contained tags