如何使用Javascript从XML键/值的.text获取完整值(包括任何其他标记)

时间:2015-05-29 08:18:34

标签: javascript xml

所以我对一个特定的问题感到难过。

我有一个包含键值对的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> 

我需要打印完整的值。

有人可以让我知道我错过了什么,或者我怎么能这样做?

1 个答案:

答案 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