2017-02-09 17 views
2

У меня есть XML-файл:Как читать xml-файл с помощью XDocument?

<?xml version="1.0" encoding="UTF-8"?> 
    <root lev="0"> 
     content of root 
     <child1 lev="1" xmlns="root"> 
      content of child1 
     </child1> 
    </root> 

и следующий код:

 XDocument xml = XDocument.Load("D:\\test.xml"); 

     foreach (var node in xml.Descendants()) 
     { 
      if (node is XElement) 
      { 
       MessageBox.Show(node.Value); 
       //some code... 
      } 
     } 

Я получаю сообщения:

содержание rootcontent из child1

содержание ребенка1

Но мне нужно сообщений:

содержание корня

содержание ребенка1

Как это исправить?

+1

Возможный дубликат [LINQ to XML - получить текстовое содержимое XElement без текстового содержимого дочерних элементов] (http://stackoverflow.com/questions/10302158/linq-to-xml-get-given-xelements-text-content-without-child- elements-text-con) – Fabio

ответ

0

Попробуйте foreach(XElement node in xdoc.Nodes()) вместо этого.

1

Строка значение элемента является весь текст, который в нем (в том числе внутри дочерних элементов

Если вы хотите, чтобы получить значение каждого непустого текстового узла:.

XDocument xml = XDocument.Load("D:\\test.xml"); 

foreach (var node in xml.DescendantNodes().OfType<XText>()) 
{ 
    var value = node.Value.Trim(); 

    if (!string.IsNullOrEmpty(value)) 
    { 
     MessageBox.Show(value); 
     //some code... 
    } 
} 
+0

@CharlesMager Спасибо, что указали это. – JLRishe

+0

хороший ответ, но мне тоже нужно XElement ... – SQLprog

+0

@SQLprog Вы не дали понять, что вы на самом деле пытаетесь сделать, поэтому я не уверен, что предложить за этим. – JLRishe

1

я получил нужный результат по коду:

XDocument xml = XDocument.Load("D:\\test.xml"); 

foreach (var node in xml.DescendantNodes()) 
{ 
    if (node is XText) 
    { 
     MessageBox.Show(((XText)node).Value); 
     //some code... 
    } 
    if (node is XElement) 
    { 
     //some code for XElement... 
    } 
} 

Спасибо за внимание

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

  • Нет связанных вопросов^_^