2015-12-21 85 views
0

我有一個XML字符串,我試圖讀取使用C#,但我沒有得到子節點。我將整個XML作爲內部XML字符串。我無法讀取節點。這是我的XML字符串和我的代碼。閱讀導致問題的XML節點

<Filters FilterName="706337_test"> 
    <MemberName>Dorvil</MemberName> 
    <MemberId /> 
    <ProviderName /> 
    <ProviderId>706337</ProviderId> 
    <SelectedProjects>5030003</SelectedProjects> 
    <CNAChartSelected>false</CNAChartSelected> 
    <OldProject>false</OldProject> 
</Filters> 

C#代碼試圖讀取XML節點

XmlDocument xml = new XmlDocument(); 
xml.LoadXml(xmlstring); 
XmlNodeList xnList = xml.SelectNodes("/Filters"); 

我看到太多的過濾器,我需要讀取成員Id只有一個子節點,成員名稱等,怎樣讀?

回答

0

這是因爲你在的SelectNodes字符串是錯誤的:

var xml = new XmlDocument(); 
xml.LoadXml(xmlstring); 
var xnList1 = xml.SelectNodes("/Filters");  //list of 1 element 
var xnList2 = xml.SelectNodes("/Filters/*"); //list of 7 elements 
foreach (XmlNode node in xnList2) 
{ 
    Console.WriteLine(node.OuterXml); 
} 

您也可以使用此:

var xElements = XElement.Parse(xmlstring).Elements(); 
foreach (var element in xElements) 
{ 
    Console.WriteLine(element); 
} 
+1

非常感謝它的工作 – User

0

你需要告訴哪些節點讀取應用..

XmlDocument xml = new XmlDocument(); 
        xml.LoadXml(xmlstring); 

        XmlNodeList xnList = xml.SelectNodes("/Filters"); 
foreach (XmlNode node in xnList) 
{  
    string memberName = node["MemberName"].InnerText; 
} 

這讓應用程序知道讀取MemberName節點內部的內容。對其他節點執行相同操作併發回你的結果。隨時調試以查看您要從每個節點中獲取的內容。