所以我对一个特定的问题感到难过。
我有一个包含键值对的XML文件。
我的基本目标是只输入一个密钥,并使用警告框显示相应的值。
我的XML文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<name key="amit"><person><b1>Amit</b1></person> </name>
<name key="Peter">Morris </name>
</properties>
我的脚本文件如下:
var xmlDoc;
function getValue(key)
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.load("properties.xml");
if(xmlDoc.readyState == 4)
{
for(var i=0;i<xmlDoc.documentElement.childNodes.length;i++)
{
if(xmlDoc.documentElement.childNodes[i].attributes.getNamedItem("key").nodeValue==key)
{
alert(xmlDoc.documentElement.childNodes[i].nodeValue);
return xmlDoc.documentElement.childNodes[i].text;
}
}
}
}
我的html文件如下:
<html>
<head>
<script src="script.js"></script>
</head>
<body>
<script>
var value=getValue("amit");
alert(value);
</script>
</body>
</html>
当我运行我的代码时,如果我传递的值是'Peter',那么我的警告框会显示'Morris'。这是我的预期。
但是当我传递值'amit'时,警告框会显示 ONLY 'Amit'。它没有告诉我
<person><b1>Amit</b1></person>
我需要打印完整的值。
有人可以让我知道我错过了什么,或者我怎么能这样做?
答案 0 :(得分:0)
由于您使用的是on('result')
,因此您可以使用ActiveXObject
属性来获取元素的标记:
.xml
此外,我建议您查看xpath并使用function getValue(key)
{
var xmlDoc;
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.load("properties.xml");
if(xmlDoc.readyState == 4)
{
return xmlDoc.selectSingleNode("//name[@key='" + key + "']").xml;
}
return "";
}
(或selectSingleNode()
)轻松获取XML的特定部分,如上所示。
供参考,简单介绍xpath:w3school