C# XNode 添加一个 NameSpace

Posted

技术标签:

【中文标题】C# XNode 添加一个 NameSpace【英文标题】:C# XNode add a NameSpace 【发布时间】:2020-05-29 06:31:28 【问题描述】:

我有一个由 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>

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

【问题讨论】:

我刚刚用谷歌搜索,如何将命名空间添加到 xml,得到了这个....how-to-create-a-document-with-namespaces-linq-to-xml 你想在哪里添加命名空间?在根级别还是节点级别? 我不想我的命名空间位于根级别,以便稍后在我的 CustomXMLParts of a word Document 中找到它 【参考方案1】:

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

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 接口编辑您的类,这里是Example

【讨论】:

如果我没看错,你会想到,我将我的 XML 保存为一个普通的 XML 文件,但我没有。我只是创建了一个 XNode,然后将它添加到 Word 文档的 CustomXMLParts 中。

以上是关于C# XNode 添加一个 NameSpace的主要内容,如果未能解决你的问题,请参考以下文章

Unity图形节点插件xNode简单使用说明

Unity图形节点插件xNode简单使用说明

在 Removechildnode 之后删除 CreateTextNode 添加的空白

为啥 XNode 在 System.XML.Linq 命名空间而不是 System.XML?

将 XmlNode 转换为 XNode?

删除在 XML 中添加元素(当我们删除元素时)时创建的空格