我有以下似乎无法查询的xml包,因为它不包含根元素。不幸的是,xml有效负载不能改变,所以我坚持使用这种方法。我想知道有没有好的方法来改变我的例子。我也尝试过使用DesendantsAndSelf,但是不能让它工作。感谢Tnx的帮助。
string xml = @"<book number='3'>
<description>Test</description>
<chapter number='3-1-1'>
<description>Test</description>
</chapter>
<chapter number='3-1-2'>
<description>Test</description>
</chapter>
</book>";
下面是我的代码示例:
XElement element= XElement.Parse(xml);
List<Book> books = ( from t in element.Descendants("book")
select new Book
{
number = (String)t.Attribute("number"),
description = (String)t.Element("description").Value,
// Load the chapter information
chapters = t.Elements("chapter")
.Select(te => new Chapter
{
number = (String)te.Attribute("number"),
description = (String)t.Element("description").Value
}).ToList(),
}).ToList();
foreach(var d in books)
{
Console.WriteLine(String.Format("number = {0}: description = {1}",d.number,d.description));
foreach(var c in d.chapters)
Console.WriteLine(String.Format("number = {0}: description = {1}",c.number,c.description));
}
这是我的类对象:
public class Book
{
public String number { get; set; }
public String description { get; set; }
public List<Chapter> chapters { get; set; }
}
public class Chapter
{
public String number { get; set; }
public String description { get; set; }
}
发布于 2019-05-10 09:21:06
只需将XElement element= XElement.Parse(xml);
更改为var element = XDocument.Parse(xml);
。在本例中,您将获得一个具有book
后代的XDocument
实例。如果您使用XElement element= XElement.Parse(xml);
,那么当前元素将是book
,它没有任何book
后代。
https://stackoverflow.com/questions/56069076
复制相似问题