Tôi muốn XML theo định dạng sau:sử dụng XmlArrayItem thuộc tính mà không XmlArray trên Serializable C# lớp
<configuration><!-- Only one configuration node -->
<logging>...</logging><!-- Only one logging node -->
<credentials>...</credentials><!-- One or more credentials nodes -->
<credentials>...</credentials>
</configuration>
Tôi đang cố gắng để tạo ra một lớp Configuration
có thuộc tính [Serializable]
. Để serialize các chứng chỉ nút, tôi đã điều sau đây:
[XmlArray("configuration")]
[XmlArrayItem("credentials", typeof(CredentialsSection))]
public List<CredentialsSection> Credentials { get; set; }
Tuy nhiên, khi tôi serialize này sang XML, XML là định dạng sau:
<configuration>
<logging>...</logging>
<configuration><!-- Don't want credentials nodes nested in a second
configuration node -->
<credentials>...</credentials>
<credentials>...</credentials>
</configuration>
</configuration>
Nếu tôi loại bỏ các dòng [XmlArray("configuration")]
, tôi có được những điều sau đây:
<configuration>
<logging>...</logging>
<Credentials><!-- Don't want credentials nodes nested in Credentials node -->
<credentials>...</credentials>
<credentials>...</credentials>
</Credentials>
</configuration>
Làm thế nào tôi có thể serialize này cách tôi muốn, với nhiều <credentials>
nút trong nút đơn gốc <configuration>
? Tôi muốn làm điều này mà không cần phải thực hiện IXmlSerializable
và làm serialization tùy chỉnh. Đây là cách lớp của tôi được mô tả:
[Serializable]
[XmlRoot("configuration")]
public class Configuration : IEquatable<Configuration>
Yep, mà làm việc! Tôi đã được thiết lập trên "nó là một' Danh sách', gotta sử dụng thuộc tính 'XmlArrayItem' một nơi nào đó" mà tôi thậm chí không nghĩ rằng làm cho nó một thường xuyên 'XmlElement'. –
câu trả lời tốt, tôi đã có cùng một vấn đề - tôi muốn loại bỏ: DATAITEMS> giải quyết nó với: [XmlElement ("DataItem")] public List DataItem {get; bộ; } –
nologo
Cảm ơn Mikael. Điều này đã giúp tôi với vấn đề của tôi ngày hôm nay. +1 – John