Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript从XML键/值的.text中获取完整值(包括任何附加标记)_Javascript_Xml - Fatal编程技术网

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

如何使用Javascript从XML键/值的.text中获取完整值(包括任何附加标记),javascript,xml,Javascript,Xml,所以我在一个特别的问题上被难住了 我有一个XML文件,其中包含一个键值对 我的基本目标是只需输入一个键,并使用警报框显示相应的值 我的XML文件如下所示: <?xml version="1.0" encoding="UTF-8"?> <properties> <name key="amit"><person><b1>Amit</b1></person> </name> <name key="Pe

所以我在一个特别的问题上被难住了

我有一个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>
    <head>
    <script src="script.js"></script>
</head>
<body>
    <script>
        var value=getValue("amit");
        alert(value);
    </script>
</body>
</html>

阿米特
莫里斯
我的脚本文件如下所示:

<?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>
    <head>
    <script src="script.js"></script>
</head>
<body>
    <script>
        var value=getValue("amit");
        alert(value);
    </script>
</body>
</html>
var-xmlDoc;
函数getValue(键)
{
xmlDoc=新的ActiveXObject(“Microsoft.XMLDOM”);
load(“properties.xml”);
if(xmlDoc.readyState==4)
{

对于(var i=0;i由于您使用的是
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 "";
}
此外,我建议您研究并使用
selectSingleNode()
(或
selectNodes()
)轻松获取XML的特定部分,如上所示


作为参考,这里有一个对xpath的温和介绍:

。text只提供任何文本值—XML元素是结构化的,而不是文本,因此是elided@pete23:我明白了。在我的例子中,既然.text不起作用,我该如何打印整个字符串?(使用xml元素标记)?谢谢。这非常有用!