【发布时间】:2013-07-03 19:52:41
【问题描述】:
我有以下类的对象:
public class Root
{
[XmlElement]
public BOMItems[] Row { get; set; }
}
public class BOMItems
{
[XmlElement("ITEMNO")]
public string ITEMNO { get; set; }
[XmlElement("USED")]
public string USED { get; set; }
[XmlElement("PARTSOURCE")]
public string PARTSOURCE { get; set; }
[XmlElement("QTY")]
public string QTY { get; set; }
}
我正在尝试使用此方法将其序列化为XDocument:
public XDocument TransformClassToXMLBOM(Root rt)
{
var serializer = new XmlSerializer(typeof(Root));
var sww = new StringWriter();
var settings = new XmlWriterSettings();
settings.ConformanceLevel = ConformanceLevel.Auto;
var writer = XmlWriter.Create(sww, settings);
serializer.Serialize(writer, rt);
var doc = new XDocument(
new XElement("Row",
new XElement("ITEMNO"),
new XElement("USED"),
new XElement("PARTSOURCE"),
new XElement("QTY")));
doc.Save(writer);
return doc;
}
我什至尝试在new XElement("Row", 之前插入一个额外的元素,如下所示:
var doc = new XDocument(
new XElement("Root",
new XElement("Row",...
我总是在doc.Save(writer);这一行收到以下错误:
处于 EndRootElement 状态的令牌 StartDocument 将导致 无效的 XML 文档。确保 ConformanceLevel 设置为 如果需要,设置为 ConformanceLevel.Fragment 或 ConformanceLevel.Auto 编写一个 XML 片段。
起初我以为我可能缺少 XElement 或拼写错误,但我找不到任何错误。我不知道如何查看writer 中的值来检查结果,所以我不知道如何找到解决方案。
我想以这样的方式结束:
<Root>
<Row>
<ITEMNO>1</ITEMNO>
<USED>Y</USED>
<PARTSOURCE>BUY</PARTSOURCE>
<QTY>10</QTY>
</Row>
</Root>
如何找到问题的原因?实现我想要的结果的正确方法是什么?
【问题讨论】:
-
你想达到什么目的?你能清楚地说明你的输出吗?
-
我希望将 Root 对象转换为 XML 字符串
-
看我下面的答案..这是你想要的吗?
标签: c# xml-serialization