我觉得这可能是重复的,但我找不到确切的答案。我正在一个对象上实现IXmlSerializable,并想知道使用linq到xml是否可以接受。
换掉这个..。
public void WriteXml(XmlWriter writer)
{
writer.WriteElementString("Name", _name);
writer.WriteElementString("X", _x.ToString());
writer.WriteElementString("Y", _y.ToString());
}用这个..。
public void WriteXml(XmlWriter writer)
{
XElement element =
new XElement("MyObj",
new XElement("Name", _name),
new Xelement("X", _x),
new Xelement("Y", _y)
);
element.WriteTo(writer);
}我的实际实现显然更加复杂,以至于我觉得linq到xml结构更简单、更易读。以上是否可以接受?
发布于 2014-01-13 01:56:53
第一个实现不生成与第二个实现相同的xml。您应该编写第二个实现,如下所示,以匹配第一个实现生成的xml:
public void WriteXml(XmlWriter writer)
{
new XElement("Name", _name).WriteTo(writer);
new XElement("X", _x).WriteTo(writer);
new XElement("Y", _y).WriteTo(writer);
}另外,当你打电话
writer.WriteElementString("X", _x.ToString());结果可能不符合XML,并且容易受到不正确解析的影响,这取决于_x类型(例如,如果_x类型是DateTime),所以第二个实现更好,至少在这方面是这样的。
我从C# 5中得到了一些信息。
https://stackoverflow.com/questions/18468249
复制相似问题