我在ASP.Net Core中具有以下模型
[Serializable]
[XmlRoot(ElementName = "CREDIT")]
public class Credit
{
[XmlElement(ElementName = "D_numbern")]
public string Number get; set; }
}
我使用StringWriter进行了序列化,我应该像这样获取XML的问题
<CREDITS>
<CREDIT ID="1">
<D_number1>06</D_number1>
</CREDIT>
<CREDIT ID="2">
<D_number2>06</D_number2>
</CREDIT>
</CREDITS>
我没有找到一种解决方案,如何使每笔信用动态化。预先感谢您的协助。
XmlSerializer
支持的东西,坦率地说,这对xml来说通常是一个糟糕的设计;它不仅是多余的(订购了xml:没有必要告诉您您是1/2/3项目),而且它对大多数xml工具(包括序列化程序,模式验证器等)都充满敌意。我的
强烈建议是重新考虑您想要的xml,或者如果不是您的想法,请挑战需求。如果D_number42
始终与作为父级的ID="42"
相匹配,则坦率地说,后缀完全没有用。如果碰巧是另一个数字,这些数字在这些示例中仅看起来是相同的,则:<D_number someattribute="42">06</D_number>
必须
执行此操作,则必须通过XDocument
,XmlDocument
或XmlWriter
手动进行。XmlWriter
为例: static void WriteCredit(XmlWriter xml, string id, string number)
{
xml.WriteStartElement("CREDITS");
xml.WriteStartElement("CREDIT");
xml.WriteAttributeString("ID", id);
xml.WriteElementString("D_number" + id, number);
xml.WriteEndElement();
xml.WriteEndElement();
}
写入控制台的用法:
using (var xml = XmlWriter.Create(Console.Out)) { WriteCredit(xml, "1", "06"); }