次のクラスのオブジェクトがあります。
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 ドキュメントになります。XML フラグメントを作成する場合は、ConformanceLevel 設定が ConformanceLevel.Fragment または ConformanceLevel.Auto に設定されていることを確認してください。
最初は、XElement がないか、スペルが間違っているのではないかと思いましたが、間違いを見つけることができません。結果を確認するために値を調べる方法がわからないwriter
ため、これに関する解決策を見つける方法がわかりません。
私は次のようなもので終わりたいと思います:
<Root>
<Row>
<ITEMNO>1</ITEMNO>
<USED>Y</USED>
<PARTSOURCE>BUY</PARTSOURCE>
<QTY>10</QTY>
</Row>
</Root>
問題の原因を見つけるにはどうすればよいですか? 希望する結果を達成するための正しい方法は何ですか?