首页 > 解决方案 > C# XNode 添加一个 NameSpace

问题描述

我有一个由 JSON 制作的 xNode。

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>

我的目标是为其添加一个命名空间。我怎样才能做到这一点?

标签: c#jsonxml

解决方案


您可以通过这种方式在根级别添加命名空间:

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接口编辑你的类,这里是一个例子


推荐阅读