gpt4 book ai didi

c# - XMLSerializer 更改元素的名称

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:58 25 4
gpt4 key购买 nike

我正在尝试序列化对象以导入到另一个软件,问题是,要导入的 XML 中的元素包含“:”(例如:< ftr:filter>)。
我用 [XmlAttribute("ftr:filter")] 声明了覆盖这些名称的类和 [XMLElement(ftr:differentFilter")] ,但序列化器产品不同的节点。我打赌它与编码有关,但我无法更改结果(以为我更改了编码)。
类示例:

public class ListPrijemkaRequest
{
[XmlAttribute("version")]
public string Version { get; set; }
[XmlAttribute("prijemkaVersion")]
public string PrijemkaVersion { get; set; }
[XmlElement("lst:requestPrijemka")]
public List<RequestPrijemka> Requests { get; set; }
}

public class RequestPrijemka
{
[XmlElement("ftr:filter")]
public RequestDateFilter Filter { get; set; }
}

期望的输出:

< lst:listPrijemkaRequest version="2.0" prijemkaVersion="2.0">
< lst:requestPrijemka>
< ftr:filter>
< ftr:dateFrom>2013-01-10</ftr:dateFrom>
< ftr:dateTill>2013-03-30</ftr:dateTill>
< /ftr:filter>
< /lst:requestPrijemka>
< /lst:listPrijemkaRequest>

获得的输出:

< lst_x003A_listPrijemkaRequest version="2.0" prijemkaVersion="2.0">
< lst_x003A_requestPrijemka>
< ftr_x003A_filter>
< ftr_x003A_dateFrom>2013-01-10</ftr_x003A_dateFrom>
< ftr_x003A_dateTill>2013-03-30</ftr_x003A_dateTill>
< /ftr_x003A_filter>
< /lst_x003A_requestPrijemka>
< /lst_x003A_listPrijemkaRequest>

最佳答案

如果那些“标签”ftr/lst 是命名空间,则无需对它们进行“硬编码”,您可以设置序列化程序以使用这些命名空间。

http://msdn.microsoft.com/en-us/library/ms163161%28v=vs.110%29.aspx

例子(取自XML Serialization and namespace prefixes)

[XmlRoot("Node", Namespace="http://your.companies.namespace")]
public class ListPrijemkaRequest {
[XmlElement("requestPrijemka")]
public List<RequestPrijemka> Requests { get; set; }
}

static class Program
{
static void Main()
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("lst", "http://your.companies.namespace");
XmlSerializer xser = new XmlSerializer(typeof(ListPrijemkaRequest));
xser.Serialize(Console.Out, new ListPrijemkaRequest(), ns);
}
}

如果不是,我认为“默认”序列化是不可能的。

其他选项:

但正如我在评论中所说,不建议首先在节点名称中使用 :!

关于c# - XMLSerializer 更改元素的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803001/

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