如何使用Javascript从XML键/值的.text中获取完整值(包括任何附加标记)
所以我在一个特别的问题上被难住了 我有一个XML文件,其中包含一个键值对 我的基本目标是只需输入一个键,并使用警报框显示相应的值 我的XML文件如下所示:如何使用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 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元素标记)?谢谢。这非常有用!