所以我想填充一个Xml文档到一个对象的列表中,我设法检索单个节点,但问题是我想选择几个!C#Xml Linq,填充某些对象类型的列表
这里是对象
public class Item
{
public string Title{get;set;}
public string Date{get;set;}
}
这里是XML
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfFeed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<XmlItem Name="Test">
<Items>
<SubItem>
<Title>Some Title</Title>
<Date>Fri, 30 Oct</Date>
</SubItem>
<SubItem>
<Title>Some Title</Title>
<Date>Fri, 30 Oct</Date>
</SubItem>
</items>
</XmlItem>
</ArrayOfFeed>
这里是我的代码。正如我之前所说的,我设法只选择XML中的第一个子项,我想选择全部。试图玩弄它,但迄今没有成功。
var itemToFind = "Test"
XDocument doc = XDocument.Load(location);
IEnumerable<Item> result = (from c in doc.Descendants("XmlItem")
where c.Attribute("Name").Value == itemToFind
let r = c.Element("Items")
let z = r.Element("SubItem")
select new Item()
{
Title = (string)z.Element("Title"),
Date = (string)z.Element("Date"),
}).ToList();
return result;
帮助真的会感谢:)
那么你的当前代码会发生什么?你为什么要创建FeedItem类型的对象而不是Item?你为什么要分配属性标题和日期而不是标题和日期?你为什么要在最后调用'Cast- ().ToList()'?你真的在寻找SubItems而不是XmlItems吗? (您的Item类只有一个标题/日期,表明它属于SubItem而不是XmlItem ...) –
在您的XML中是否有超过一个具有属性Name =“Test”的XmlItem元素? –
对不起,我不得不重写我的代码,以便更容易理解我想要的内容,因此,现在应该纠正一些错别字。 关于我在最后的演员,我只是把它扔在那里,因为它给了我例外。 进出口寻找所有子项的值,比如标题和日期,我要找回所有的人都在那里/如果XmlElements属性匹配, 对不起,希望它更有意义:) – user3122978