gpt4 book ai didi

c# - XmlAttribute/XmlText 不能用于编码复杂类型

转载 作者:太空宇宙 更新时间:2023-11-03 19:19:35 24 4
gpt4 key购买 nike

我想将类 Ticket 序列化为 xml。由于我的自定义字段类,我收到错误:“XmlAttribute/XmlText 不能用于编码复杂类型”。

自定义字段的 xml 应该是这样的(属性数组是 nesseray,但我不明白如何创建它):

<custom_fields type="array">
<custom_field name="Standby Reason" id="6">
<value/>
</custom_field>
<custom_field name="Close Date" id="84">

类(class)票

public class Ticket
{
[XmlElement("custom_fields")]
public CustomFields Custom_fields { get; set; }

自定义字段类

[Serializable]
public class CustomFields
{
[XmlAttribute("array")]
public List<CustomField> custom_field { get; set; }

自定义字段类

[Serializable]
public class CustomField
{
[XmlIgnore]
public string Name { get; set; }

[XmlElement]
public int Id { get; set; }

[XmlElement]
public string Value { get; set; }

序列化方法

public string Serialize(object obj)
{
var nsSerializer = new XmlSerializerNamespaces();
nsSerializer.Add(String.Empty, String.Empty);

var serializer = new XmlSerializer(typeof(Ticket), String.Empty);

using (StringWriter writer = new StringWriter())
{
ExtendedXmlTextWriter xmlTextWriter = new ExtendedXmlTextWriter(writer);
serializer.Serialize(xmlTextWriter, obj, nsSerializer);

//return writer.ToString();

XElement root = new XElement("custom_fields", new XAttribute("type", "array"),
new XElement("custom_field",
new XAttribute("name", "Standby Reason"),
new XAttribute("id", 6)
), new XElement("value"),
new XElement("custom_field",
new XAttribute("name", "Close Date"),
new XAttribute("id", 84)
)
);

return (writer.ToString() + root.ToString());
}

最佳答案

有时 Linq To Xml 会很有帮助

XElement root = new XElement("ticket",
new XElement("custom_fields",
new XAttribute("type", "array"),
new XElement("custom_field",
new XAttribute("name", "Standby Reason"),
new XAttribute("id", 6)
),
new XElement("value"),
new XElement("custom_field",
new XAttribute("name", "Close Date"),
new XAttribute("id", 84)
)
)
);

string xml = root.ToString();

输出:

<ticket>
<custom_fields type="array">
<custom_field name="Standby Reason" id="6" />
<value />
<custom_field name="Close Date" id="84" />
</custom_fields>
</ticket>

关于c# - XmlAttribute/XmlText 不能用于编码复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13420670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com