2014-09-04 6 views
0

Я в основном хочу распечатать только имена моего XML-документа в текстовое поле.Разбор XML-документа и

Все это печатает имя.

XmlDocument xDoc = new XmlDocument(); 
xDoc.Load("my documents address"); 
TextBox2.Text = xDoc.SelectSingleNode("Web_Service/Food/Name").InnerText; 

То, что я хотел бы сделать что-то вроде этого ...

String[] output; 

XmlDocument xDoc = new XmlDocument(); 
xDoc.Load("my documents address"); 

foreach(Name i in xDoc){ 
    append i to output; 
} 

TextBox2.Test = output; 

Или что-то подобное. Если бы кто-то мог мне помочь, я бы очень признателен.

Так он печатает:

Карри, Цыпленок, Burger, Стив, специи и т.д.

ответ

0

Использование LINQ-to-XML, также предложенное в ответе @ Selman, является хорошим вариантом для изучения. Но в случае, если вы хотите придерживаться XmlDocument, вы можете использовать SelectNodes(), чтобы получить все соответствующие узлы:

List<string> output = new List<string>(); 
foreach(XmlNode name in xDoc.SelectNodes("Web_Service/Food/Name")) 
{ 
    output.Add(name.InnerText); 
} 
TextBox2.Text = string.Join(", ", output); 
+0

Это то, что я искал, спасибо большое. – Spamsational

1

Итак, вы хотите просто сцепить значения Name элементов? Если да, то это можно сделать легко с помощью LINQ to XML и string.Join метод:

var xmlDocument = XDocument.Load("path"); 
var names = xmlDocument.Descendants("Name").Select(x => (string)x); 
TextBox2.Text = string.Join(", ", names); 
Смежные вопросы