2015-05-29 15 views
1

因此,我一直在困擾一個特定的問題。如何使用Javascript從XML關鍵字/值的.text中獲取完整值(包括任何其他標記)

我有一個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'。我期望的。

但是,當我通過值「阿米特」,警示框顯示我只有'阿米特'。它不顯示我

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

我需要打印完整的值。

有人可以讓我知道我錯過了什麼,或者我該如何去做這件事?

+0

的.text只是給你任何文本值 - XML元素是結構性的,而不是文字,因此被省略掉 – pete23

+0

@ pete23:我明白了。所以在我的情況下,因爲.text不起作用,我將如何去打印整個字符串? (使用xml元素標籤)。 –

回答

0

由於您使用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

+0

謝謝。這非常有幫助! –

相關問題