gpt4 book ai didi

c# - 使用 XmlSerializer 在不包含节点的情况下序列化名称值对数组

转载 作者:太空狗 更新时间:2023-10-30 00:34:13 25 4
gpt4 key购买 nike

我有这门课...

[XmlRoot("config")]
public class SourceConfig
{
public string Description { get; set; }

public string HelpLink { get; set; }
}

...我将其序列化为...

<config>
<Description />
<HelpLink />
<param name="param1" value="" />
<param name="param2" value="" />
</config>

...使用 XmlSerializer + 使用 XmlDocument 进行后处理添加 <param>元素。

有没有更好的方法来序列化 <param>没有使用 XmlDocument 进行后处理的元素?

我尝试使用 XmlArray属性但 <param>元素最终在另一个节点内。

最佳答案

让它成为一个 XmlElement:

[XmlRoot("config")]
public class SourceConfig
{
public string Description { get; set; }

public string HelpLink { get; set; }

[XmlElement("param")]
public List<Params> param { get; set; }
}

完整的工作示例:

[XmlRoot("config")]
public class SourceConfig
{
public SourceConfig() {
Description = String.Empty;
HelpLink = String.Empty;
Parameters = new List<ParamDetails>();
}

public string Description { get; set; }
public string HelpLink { get; set; }
[XmlElement("param")]
public List<ParamDetails> Parameters { get; set; }
}

public class ParamDetails {
[XmlAttribute("name")]
public string name;
[XmlAttribute("value")]
public string value;
}

static class Program {
static void Main() {
XmlSerializer ser1 = new XmlSerializer(typeof(SourceConfig));
SourceConfig list1 = new SourceConfig();
list1.Description = "Test Desc";
list1.HelpLink = String.Empty;
list1.Parameters.Add(new ParamDetails { name = "param1", value = "1" });
list1.Parameters.Add(new ParamDetails { name = "param2", value = "2" });
ser1.Serialize(Console.Out, list1);
}
}

输出如下:

<?xml version="1.0" encoding="IBM437"?>
<config
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Description>Test Desc</Description>
<HelpLink />
<param name="param1" value="1" />
<param name="param2" value="2" />
</config>

关于c# - 使用 XmlSerializer 在不包含节点的情况下序列化名称值对数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8433948/

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