2013-07-09 32 views
0

元素我有一個xml文件,看起來像這樣:獲取的nodeValue爲特定的屬性值

<login> 
    <status>Login successful</status> 
    <ARole10082>Master</ARole10082> 
    <IsAdmin10082>True</IsAdmin10082> 
    <UserID10082>[email protected]</UserID10082> 
    <privilege name="Billing">1</privilege> 
    <privilege name="Nag">0</privilege> 
    <privilege name="BoardForum">1</privilege> 
    <privilege name="Association">1</privilege> 
    <privilege name="Security">1</privilege> 
    <privilege name="Appearance">1</privilege> 
    <privilege name="Configure">1</privilege> 
    <privilege name="MerchantAccounts">1</privilege> 
</login> 

我想名爲「安全性」訪問權限節點值。我正在使用jquery $ .get()調用來調用這個xml文檔。使用javascript,如何通過搜索屬性名稱等於「Security」的節點來訪問「Security」的nodeValue?

+0

您使用的訪問此什麼語言? – Bravo11

+0

@ Bravo11我正在使用javascript –

+0

.find('[name =「Security」]')。text() – dandavis

回答

0

您可以將收到的XML字符串設置爲臨時元素的innerHTML,然後通過document.querySelector()查詢該元素(使用CSS樣式選擇器)。

例(online demo here):

var xml = '<login>\ 
    <status>Login successful</status>\ 
    <ARole10082>Master</ARole10082>\ 
    <IsAdmin10082>True</IsAdmin10082>\ 
    <UserID10082>[email protected]</UserID10082>\ 
    <privilege name="Billing">1</privilege>\ 
    <privilege name="Nag">0</privilege>\ 
    <privilege name="BoardForum">1</privilege>\ 
    <privilege name="Association">1</privilege>\ 
    <privilege name="Security">1</privilege>\ 
    <privilege name="Appearance">1</privilege>\ 
    <privilege name="Configure">1</privilege>\ 
    <privilege name="MerchantAccounts">1</privilege>\ 
</login>'; 
var container = document.createElement('div'); 
container.innerHTML = xml; 

var securityPrivilege = 
       container.querySelector('privilege[name="Security"]').innerHTML; 
console.log('securityPrivilege: ', securityPrivilege); 

輸出:

securityPrivilege: 1 
+0

您是否嘗試過? – acdcjunior

0

編程方式選擇合適的節點:

public static string GetSecurityValue() 
    { 
     var document = new System.Xml.XmlDocument(); 
     document.Load("data.xml"); 

     foreach (System.Xml.XmlNode child in document.FirstChild.ChildNodes) 
     { 
      // Name is a bad attribut name, child.Name already exists, it will give you status, ARole10082, etc 
      if (child.Attributes.Count > 0 && string.Equals("Security", child.Attributes["name"].Value)) 
      { 
       return child.InnerText; 
      } 
     } 

     return "Could not find security node"; 
    } 
0
var role = x.getElementsByTagName("login"); 
        for (i=0; i<role.length; i++){ 
         if (role[i].childNodes.length > 3){ 
          privileges = role[0].getElementsByTagName("privilege"); 
          for (j=0; j<privileges.length; j++){ 
           name = privileges[j].attributes.name.value; 
           if (privileges[j].hasChildNodes()){ 
            value = privileges[j].childNodes[0].nodeValue; 
           }else{ 
            value = "0"; 
           } 

           if (name === "Security" && value === "1"){ 
            localStorage["Security"] = 1; 
           }else{ 
            localStorage["Security"] = 0; 
           } 
          } 
         } 
        }