2015-12-21 76 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节点内部的内容。对其他节点执行相同操作并发回你的结果。随时调试以查看您要从每个节点中获取的内容。