Linq to XML查询问题
我有一个 List
集合,我尝试使用 Linq to XML 生成 xml 文件。
List 类如下:
public class Item
{
public int Id { get; set; }
public string ItemName {get; set;}
}
我需要获取如下所示的 XML:
<Items>
<Item>
<ID>1</ID>
<Item_Name>Super Sale Item Name</Item_Name>
</Item>
</Items>
这是我尝试过的查询,但我没有运气开始工作,
XDocument xdoc = new XDocument(new XElement("Items"),
_myItemCollection.Select(x => new XElement("Item",
new XElement("ID", x.Id),
new XElement("Item_Name", x.ItemName))));
我不断收到错误消息,说它将创建无效的 XML。有什么想法吗?
错误是
此操作将创建结构不正确的文档。
在 System.Xml.Linq.XDocument.ValidateDocument(XNode 先前,XmlNodeTypeallowBefore,XmlNodeTypeallowAfter) 在 System.Xml.Linq.XDocument.ValidateNode(XNode 节点,XNode 之前) 在 System.Xml.Linq.XContainer.AddNodeSkipNotify(XNode n) 在 System.Xml.Linq.XContainer.AddContentSkipNotify(对象内容) 在 System.Xml.Linq.XContainer.AddContentSkipNotify(对象内容) 在 System.Xml.Linq.XContainer.AddContentSkipNotify(对象内容) 在 System.Xml.Linq.XDocument..ctor(Object[] 内容)
I have a List<Item>
collection that I am trying to generate an xml file from using Linq to XML.
The List class is below:
public class Item
{
public int Id { get; set; }
public string ItemName {get; set;}
}
I need to get XML that looks like this:
<Items>
<Item>
<ID>1</ID>
<Item_Name>Super Sale Item Name</Item_Name>
</Item>
</Items>
Here's the query I tried but am having no luck getting to work
XDocument xdoc = new XDocument(new XElement("Items"),
_myItemCollection.Select(x => new XElement("Item",
new XElement("ID", x.Id),
new XElement("Item_Name", x.ItemName))));
I keep getting an error saying it would create invalid XML. Any ideas?
Error is
This operation would create an incorrectly structured document.
at System.Xml.Linq.XDocument.ValidateDocument(XNode previous, XmlNodeType allowBefore, XmlNodeType allowAfter)
at System.Xml.Linq.XDocument.ValidateNode(XNode node, XNode previous)
at System.Xml.Linq.XContainer.AddNodeSkipNotify(XNode n)
at System.Xml.Linq.XContainer.AddContentSkipNotify(Object content)
at System.Xml.Linq.XContainer.AddContentSkipNotify(Object content)
at System.Xml.Linq.XContainer.AddContentSkipNotify(Object content)
at System.Xml.Linq.XDocument..ctor(Object[] content)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个:
您缺少的主要内容是
XElement
的集合项目需要嵌套在第一个XElement
(“Items”)中,而不是它的同级中。请注意,new XElement("Items")...
更改为new XElement("Items", ...
Try this:
The main thing you are missing is that the project of your collection to
XElement
needs to be nested in the firstXElement
("Items") rather than it's sibling. Notice thatnew XElement("Items")...
is changed tonew XElement("Items", ...
您太早关闭第一个 XElement:
You're closing your first XElement too early: