javascript - 如何使用 Javascript 从 XML 键/值的 .text 获取完整值(包括任何附加标签)

标签 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”时,警报框显示“Amit”。它没有显示给我

  <person><b1>Amit</b1></person> 

我需要打印完整的值。

有人可以让我知道我错过了什么或者我该如何去做吗?

最佳答案

由于您使用的是 ActiveXObject,因此您可以使用 .xml 属性来获取元素的标记:

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 "";
}

另外,我建议您查看xpath并使用 selectSingleNode() (或 selectNodes())轻松获取 XML 的特定部分,如上所示。

作为引用,xpath 的简单介绍:w3school

关于javascript - 如何使用 Javascript 从 XML 键/值的 .text 获取完整值(包括任何附加标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30524586/

相关文章:

javascript - Protractor 脚本太快并且未处理覆盖上的元素

python - security.xml 中的 OpenERP ir.rule 记录

javascript - 在 Jquery.validate.js 中编辑日期 dd/mm/yyyy 验证的函数

javascript - 如何添加鼠标悬停音频的延迟(悬停时的声音)

java - selenium xpath 表达式的语法错误

python - 如何使用 xml.dom 中的 minidom 获取字符串形式的内部内容?

java - 找不到元素 'tx:annotation-driven' 的声明

java - XML 无法在编码上创建 JAXBContext

javascript - console.log 如何处理没有返回值的函数

javascript - Pager JS 参数和 Knockout