gpt4 book ai didi

c# - XML 序列化和命名空间前缀

转载 作者:行者123 更新时间:2023-12-04 16:52:09 24 4
gpt4 key购买 nike

我正在寻找一种使用 C# 的方法,我可以将类序列化为 XML 并添加命名空间,但定义该命名空间将使用的前缀。

最终我试图生成以下 XML:

<myNamespace:Node xmlns:myNamespace="...">
<childNode>something in here</childNode>
</myNamespace:Node>

我知道 DataContractSerializerXmlSerializer我可以添加一个命名空间,但它们似乎在内部生成了一个前缀,有些是我无法控制的。我可以使用这些序列化程序中的任何一个来控制它吗(我可以使用它们中的任何一个)?

如果我无法控制命名空间的生成,我是否需要编写自己的 XML 序列化程序,如果是这样,编写它的最佳目的是什么?

最佳答案

要控制命名空间别名,请使用 XmlSerializerNamespaces .

[XmlRoot("Node", Namespace="http://flibble")]
public class MyType {
[XmlElement("childNode")]
public string Value { get; set; }
}

static class Program
{
static void Main()
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("myNamespace", "http://flibble");
XmlSerializer xser = new XmlSerializer(typeof(MyType));
xser.Serialize(Console.Out, new MyType(), ns);
}
}

如果您需要在运行时更改命名空间,您可以另外使用 XmlAttributeOverrides .

关于c# - XML 序列化和命名空间前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52292085/

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