簡體   English   中英

添加根元素屬性

[英]Add root element attribute

我正在序列化如下所示的類

 XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
 namespaces.Add(string.Empty, string.Empty);
 StringWriter sw = new StringWriter();
 XmlSerializer serializer1 = new XmlSerializer(typeof(List<student>), new XmlRootAttribute("Response"));
 XmlTextWriter xmlWriter = new XmlTextWriter(sw);
 serializer1.Serialize(xmlWriter, ls, namespaces);
 sw.ToString()

下面的結果字符串

<?xml version="1.0" encoding="utf-16"?>
<Response><student><name>xxx</name></student></Response>

但是,如何將屬性添加到根元素(響應)? 像下面一個

<?xml version="1.0" encoding="utf-16"?>
<Response status="1"><student><name>xxx</name></student></Response>

您只需要用XmlAttribute標記該類的屬性,即

class MyClass{
[XmlAttribute("status")]
public string ErrorStatus { get; set; }
}

編輯:

剛意識到您正在直接序列化列表。 將您的列表放在父類Response中,然后將上述屬性添加到該Response類中,然后序列化Response對象。

希望這可以幫助。

您可以創建另一個包含該列表的對象,然后創建一個屬性以將該屬性添加到根節點。

訣竅是在此新類中以顯式類型分配給學生類型作為列表的開頭,以避免將您的列表嵌套在另一個父節點中。

[XmlType(TypeName = "Response")]    
public class ResponseObject
{
    [XmlAttribute("status")]        
    public string file { get; set; }

    [XmlElement("Student", Type = typeof(Student))]
    public List<Student> studentList { get; set; }
}

您的代碼將如下所示

XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
StringWriter sw = new StringWriter();
XmlSerializer serializer1 = new XmlSerializer(typeof(ResponseObject));
XmlTextWriter xmlWriter = new XmlTextWriter(sw);

//Creating new object and assign the existing list and status
ResponseObject resp = new ResponseObject();
resp.studentList = ls;
resp.status = 1;

//Serialize with the new object
serializer1.Serialize(xmlWriter, resp, namespaces);
sw.ToString()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM