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的主要内容,如果未能解决你的问题,请参考以下文章
在 Removechildnode 之后删除 CreateTextNode 添加的空白