无法在parseXml之后获取attr

时间:2012-10-18 13:15:44

标签: javascript jquery xml

我编写了这个简单的JQuery代码,以查找某些XML代码的属性:

<html>
<head>
<meta charset='utf-8' />
<script type="text/javascript" src="js/jquery.min.js"></script>
</head>
<body>
<script>
var msg = '<utility value="346" cost="0" />';
alert(msg);
var xmlInput = $.parseXML(msg);
alert(xmlInput);
var xmlObject = $(xmlInput);
alert(xmlObject);
var tagname = xmlObject.nodeName;
alert("tagname="+tagname);
var value = xmlObject.attr("value");
alert("value="+tagname);
</script>
</body></html>

但是,它不起作用: http://irsrv2.cs.biu.ac.il:8080/GeniusWeb/jqueryTest3.html

标签名称和值是“未定义的”,我在Firefox和Chrome上查看过。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

你应该在xmlObject中搜索某个元素,因为XML'以'根元素'开始'。

var tagname = xmlInput.firstChild.nodeName;
// or xmlObject.children().get(0).nodeName

var value = $("utility", xmlObject).attr("value");

答案 1 :(得分:1)

两个问题。首先,您发布的代码的最后alertalert("value="+tagname);`,在任何情况下都不会提供您想要的内容。其次,您需要从解析的XML jQuery集中检索元素:

var msg = '<utility value="346" cost="0" />';
alert(msg);
var xmlInput = $.parseXML(msg);
alert(xmlInput);
var xmlObject = $(xmlInput);
alert(xmlObject);
var utility = xmlObject.find("utility");
alert("utility="+utility);
var value = utility.attr("value");
alert("value="+value);​