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>
결국 클래스를 작동시키기 위해 2 개의 다른 XMLElementAttributes로 변경해야했고 Richard Matheson은 매우 가까웠습니다. 설정과 행을 분리해야했습니다.
[System.Xml.Serialization.XmlElementAttribute("Row", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public RTACModuleDeviceConnectionSettingPagesSettingPage[] Row
{
get
{
return this.rowField;
}
set
{
this.rowField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute("Setting", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public List<RTACModuleDeviceConnectionSettingPagesSettingPageRowSetting> Setting
{
get
{
return this.settingField;
}
set
{
this.settingField = value;
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다