【发布时间】:2015-11-02 13:39:58
【问题描述】:
所以我试图将 Xml 文档填充到对象列表中,我设法检索单个节点,但问题是我想选择几个!
这是对象
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<Item>().ToList()?您实际上是在寻找 SubItems 而不是 XmlItems? (您的 Item 类只有一个标题/日期,表明它属于 SubItem 而不是 XmlItem...) -
您的 XML 中是否存在多个具有
Name="Test"属性的XmlItem元素? -
对不起,我不得不重写我的代码,以便更容易理解我想要什么,所以有一些拼写错误,现在应该更正。关于我最后的演员表,我只是把它扔在那里,因为它给了我例外。我正在寻找所有子项值,例如标题和日期,我想在 XmlElements 属性匹配的地方/如果 XmlElements 属性匹配时检索所有这些值,对不起,希望它更有意义:)
-
如果您已经解决了您的问题,请将解决方案发布为答案而不是问题的更新,如果现有答案尚未涵盖该问题。