2014-06-30 15 views
0

我正在嘗試執行以下操作:將一個Xml字符串加載到一個XDocument對象中,但是當我試圖通過Descendants方法訪問元素時,我試圖查看內部值Visual Studio中的元素無法將其識別爲Xml,因此這裏有什麼問題?XDocument不能正確加載Xml字符串

string xml = @"<ArrayOfKeyValueOfstringint xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""> 
    <KeyValueOfstringint> 
    <Key>crscmprsn_ttlprt1</Key> 
    <Value>1</Value> 
    </KeyValueOfstringint> 
    <KeyValueOfstringint> 
    <Key>ptntmntrfrm_ttlprt1</Key> 
    <Value>1</Value> 
    </KeyValueOfstringint> 
</ArrayOfKeyValueOfstringint>"; 

var xdoc = XDocument.Parse(xml); 
IEnumerable<XElement> elements = xdoc.Descendants("KeyValueOfstringint"); 

var lst = new List<KeyValuePair<string,int>>(); 

foreach (var item in elements) 
{ 
    var k = item.Element("Key").Value; 
    int v = int.Parse(item.Element("Value").Value); 
    var kvp = new KeyValuePair<string,int>(k,v); 
    lst.Add(kvp); 
} 

debugger visualizer

回答

2

你需要指定命名空間,讓您的元素:

var ns = "http://schemas.microsoft.com/2003/10/Serialization/Arrays"; 

var elements = xdoc.Descendants(ns + "KeyValueOfstringint"); 

有關XML命名空間的更多信息,看一看:Working with XML Namespaces

+0

由於這個問題解決了我 ! – BigOmar