2015-12-21 6 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"); 

Я вижу только один дочерний узел, который тоже фильтры, мне нужно прочитать MemberId, MemberName и т.д., как их читать?

ответ

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. Сделайте то же самое для других узлов и отправьте обратно ваши результаты. Отлаживайте, когда вы идете посмотреть, что вы получаете из каждого узла.

Смежные вопросы