【发布时间】:2016-08-18 01:51:39
【问题描述】:
我在尝试序列化 xml 文件时尝试添加结束标记,但它无法正常工作。这是我正在使用的课程
private List<RTACModuleDeviceConnectionSettingPagesSettingPageRowSetting> rowField;
/// <remarks/>
//[System.Xml.Serialization.XmlArrayAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItem("Setting", typeof(RTACModuleDeviceConnectionSettingPagesSettingPageRowSetting), Form = System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable = false)]
public List<RTACModuleDeviceConnectionSettingPagesSettingPageRowSetting> Row
{
get
{
return this.rowField;
}
set
{
this.rowField = value;
}
}
这是编写 XML 的代码:
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.Encoding = new UTF8Encoding(false);
settings.Indent = true;
settings.NamespaceHandling = NamespaceHandling.OmitDuplicates;
//settings.CloseOutput = true;
//settings.NewLineOnAttributes = true;
XmlSerializer xs = new XmlSerializer(deserializedDevice.GetType());
MemoryStream ms = new MemoryStream();
XmlWriter writer = XmlWriter.Create(ms, settings);
serializer.Serialize(writer, deserializedDevice, ns);
string text = Encoding.UTF8.GetString(ms.ToArray());
File.WriteAllText(path, Encoding.UTF8.GetString(ms.ToArray()));
我希望把这个写出来:
<Row>
<Setting enabled="false">
<Column>Setting</Column>
<Value>Network Connection Type</Value>
</Setting>
<Setting>
<Column>Value</Column>
<Value>Telnet</Value>
</Setting>
<Setting>
<Column>Comment</Column>
<Value />
</Setting>
</Row>
<Row>
<Setting enabled="false">
<Column>Setting</Column>
<Value>Local Port Number</Value>
</Setting>
<Setting>
<Column>Value</Column>
<Value>5206</Value>
</Setting>
<Setting>
<Column>Comment</Column>
<Value />
</Setting>
</Row>
相反,我在行上缺少多个结束标签:
<Row>
<Setting
enabled="false">
<Column>Setting</Column>
<Value>Network Connection Type</Value>
</Setting>
<Setting>
<Column>Value</Column>
<Value>Telnet</Value>
</Setting>
<Setting>
<Column>Comment</Column>
<Value />
</Setting>
<Setting
enabled="false">
<Column>Setting</Column>
<Value>Local Port Number</Value>
</Setting>
<Setting>
<Column>Value</Column>
<Value>5315</Value>
</Setting>
<Setting>
<Column>Comment</Column>
<Value />
</Setting>
</Row>
【问题讨论】:
-
你使用的数据是什么,它是如何在内存中构造的?从 Xml 看起来,您正在序列化一个包含 6 个元素的数组 - 在很多情况下,它将为数组(行)序列化一个元素,为数组元素(设置)序列化 6 个元素。
-
我正在读取一个 xml 文件 (xmlReader) 而不对其进行修改、序列化并尝试将其写回 xml。行列表下面应该有 3 个元素(设置),然后它应该开始一个新的行标签。
标签: c# xml serialization