それで、私は最初の mvc ページを書いています。また、レポート システムが簡単なレポートを作成できるように、一連のルートを書き込もうとしています。xml は小さいです。例を次に示します。
<xml><root><item><value>23</value></item></root>
私はこれを試しました:
using (StringWriter xmlStringWriter = new StringWriter())
{
using (XmlWriter xmlWriter = XmlWriter.Create(xmlStringWriter))
{
XmlWriter.WriteStartElement("root")
...
}
return xmlStringWriter.ToString();
}
しかし、これは明らかに文字列を返し、ブラウザによって xml として解釈されません。また、シリアル化可能なオブジェクトを返す場合、ブラウザーはそれを xml または json として解釈することを認識していることも知っています。そこで、xml が入れ子になっている方法で互いに保持するオブジェクトのセットを定義しようとしました。
[Serializable]
public class XmlReportRoot
{
[System.Xml.Serialization.XmlAttribute("root")]
public List<XmlReportItem> item { get; set; }
}
[Serializable]
public class XmlReportItem
{
[System.Xml.Serialization.XmlAttribute("item")]
public XmlReportValue value { get; set; }
}
[Serializable]
public class XmlReportValue
{
[System.Xml.Serialization.XmlAttribute("value")]
public string count { get; set; }
}
XmlReportRoot xmlRoot = new XmlReportRoot();
XmlReportItem xmlItem = new XmlReportItem();
List<XmlReportItem> itemList = new List<XmlReportItem>();
itemList.Add(xmlItem);
XmlReportValue xmlValue = new XmlReportValue();
xmlValue.count = newCustomers.ToString();
xmlItem.value = xmlValue;
xmlRoot.item = itemList;
XmlSerializer xmlSer = new XmlSerializer(typeof(XmlReportRoot));
xmlSer.Serialize(xmlRoot); //this line doesn't work
しかし、これは間違っているように感じます。ファイル ストリームを気にせずにシリアル化を機能させることはできませんでした。
だから私は XmlWriter のようなことをする方法を見つけようとしていたと思いますが、カスタムのシリアル化可能なオブジェクト型について心配する代わりに、オブジェクト型なしでそれをシリアル化し、それを返すことができます。