Сериализация XML и префиксы пространства имен

Я ищу путь с C#, который я могу сериализировать класс в XML и добавить пространство имен, но определить префикс, который будет использовать то пространство имен.

В конечном счете я пытаюсь генерировать следующий XML:

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

Я знаю с обоими DataContractSerializer и XmlSerializer Я могу добавить пространство имен, но они, кажется, генерируют префикс внутренне с чем-то, чем я не могу управлять. Могут я для управления им с любым из этих сериализаторов (я могу использовать любого из них)?

Если я не смогу управлять поколением пространств имен, то я должен буду записать свой собственный сериализатор XML, и если так, для чего лучший должен записать это?

58
задан Zarepheth 24 June 2013 в 19:41
поделиться

1 ответ

Чтобы управлять псевдонимом пространства имен, используйте 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.

106
ответ дан 24 November 2019 в 18:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: