Tôi đang cố gắng để serialize một đối tượng mà có một tên nút trùng lặp sử dụng C#, lý do gì tôi cần phải làm điều này là bởi vì tôi đang xây dựng một thư viện mà sử dụng một bên thứ ba API.Cho phép tên nút trùng lặp trong serialization XML bằng C#
Yêu cầu tôi cần xây dựng trông như thế này.
<DATASET>
<SITE_ID>123</SITE_ID>
<DATA type=“name”>Secondary List</DATA>
<DATA type="extra" id="CLICKTHRU_URL">http://my.domain.com/</DATA>
<DATA type="extra" id="REPLY_FORWARD_EMAIL">[email protected]</DATA>
<DATA type="extra" id="REPLY_FROM_EMAIL">[email protected]</DATA>
<DATA type="extra" id="REPLY_FROM_NAME">[email protected]</DATA>
<DATA type="extra" id="REPLY_FORWARD_SUBJECT">Customer Replies</DATA>
<DATA type="extra" id="HANDLE_UNSUBSCRIBE"></DATA>
<DATA type="extra" id="HANDLE_AUTOREPLY"></DATA>
<DATA type="extra" id="FOOTER_TEXT">Confidentiality agreement…</DATA>
<DATA type="extra" id="FOOTER_HTML"> Confidentiality agreement…</DATA>
</DATASET>
cách tiếp cận của tôi là tạo ra một lớp đại diện cho yêu cầu và sử dụng các thuộc tính XML serialization, giao diện lớp như thế này:
[XmlRoot("DataSet")]
public class AddListCallHolder : BaseCallHolder
{
private BaseAttributeHolder _name = new BaseAttributeHolder(type: "");
[XmlElement("DATA")]
public BaseAttributeHolder Name
{
get { return _name; }
set { _name = value; }
}
private BaseAttributeHolder _clickthruUrl = new BaseAttributeHolder(id: "CLICKTHRU_URL");
[XmlElement("DATA")]
public BaseAttributeHolder CLICKTHRU_URL
{
get { return _clickthruUrl; }
set { _clickthruUrl = value; }
}
}
Các lớp cơ sở của thuộc tính là:
public class BaseAttributeHolder
{
[XmlAttribute("type")]
public string Type { get; set; }
[XmlAttribute("id")]
public string Id { get; set; }
[XmlText]
public string Value { get; set; }
public BaseAttributeHolder(string value, string id, string type = "extra")
{
Type = type;
Value = value;
Id = id;
}
public BaseAttributeHolder(string id, string type = "extra")
{
Type = type;
Id = id;
}
public BaseAttributeHolder(string type = "extra")
{
Type = type;
}
public BaseAttributeHolder()
{
}
}
Khi tôi cố gắng sắp xếp và đối tượng tôi gặp phải lỗi này:
The XML element 'DATA' from namespace '' is already present in the current scope. Use XML attributes to specify another XML name or namespace for the element.
Có bất kỳ công việc xung quanh để sắp đặt từng hàng đối tượng này hoặc nhận cấu trúc của yêu cầu.
+1 cho một câu hỏi đầu tiên thực sự cũng hỏi –