2016-01-29 2 views
1

Я новичок в этой области. Пожалуйста, дайте мне знать, что, как я могу получить или дисплейКак читать имена узлов xml, используя C#

книжный магазин, книги, название, цена (DISTINCT выход я необходимо)

из следующего файла XML, как я могу читать и печатать DISTINCT XML узлы.

<?xml version="1.0" encoding="UTF-8"?> 

<bookstore> 
    <book> 
    <title lang="en">Harry Potter</title> 
    <price>29.99</price> 
    </book> 

    <book> 
    <title lang="en">Learning XML</title> 
    <price>39.95</price> 
    </book> 
</bookstore> 

ответ

2

Это легко сделать с помощью Linq to XML:

var xdoc = XDocument.Load(fileName); 
var names = xdoc.Descendants() // get all elements from xml 
       .Select(e => e.Name.LocalName) // select local name of each element 
       .Distinct(); // pick only distinct names 

Для вашего образца вывода XML является

[ 
    "bookstore", 
    "book", 
    "title", 
    "price" 
] 

Descendants() такой же, как XPathSelectElements("//*")

+1

@NithinPaul они названы по-разному, поэтому они не одинаковы :) Следуйте по ссылке и прочитайте краткое введение в LINQ для xml. И да, вам нужно использовать System.Xml.Linq' и 'using System.Linq' для проецирования и различного вызова. –

+0

@Сергей, да, я нашел его. Спасибо, что он работает отлично. :) –

1

попробовать это

public void Load() 
{ 
    var doc = XDocument.Load(filePath); 

    foreach(var unit in doc.Descendants("Unit")) 
    { 
     string str = string.Format("ID: {0}\r\nName:{0}", unit.Element("id").Value, unit.Element("name").Value); 
     MessageBox.Show(str); 
    } 
} 
Смежные вопросы