C# XNode добавляет NameSpace - PullRequest
1 голос
/ 13 февраля 2020

У меня есть xNode, сделанный JSON.

C# код:

Class class = new Class();
class.ComboBoxChecked = Class.ComboBoxChecked;
class.RadioButtonChecked = Class.RadioButtonChecked;
string test = JsonConvert.SerializeObject(class);
XNode node = JsonConvert.DeserializeXNode(test, "Root");

XML:

<Root>
  <RadioButtonChecked>1</RadioButtonChecked>
  <ComboBoxChecked>5</ComboBoxChecked>
</Root>

Моя цель состоит в том, чтобы добавить пространство имен к нему. Как мне этого добиться?

1 Ответ

1 голос
/ 13 февраля 2020

Вы можете добавить пространства имен на уровне root следующим образом:

XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("example", "http://www.w3.org");

    using (var ms = new MemoryStream())
    {
        using (TextWriter writer = new StreamWriter(ms))
        {
            var xmlSerializer = new XmlSerializer(typeof(MyClass));
            xmlSerializer.Serialize(writer, myClassInstance, ns);
            XNode node = XElement.Parse(Encoding.ASCII.GetString(ms.ToArray()));
        }
    }

Если вам нужны пространства имен в его дочерних элементах, вы можете редактировать свой класс с помощью интерфейса IXmlSerializable, вот пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...