gpt4 book ai didi

c# - 为什么 `XmlDocument.LoadXml()` 不适用于命名空间?

转载 作者:行者123 更新时间:2023-11-30 18:14:13 29 4
gpt4 key购买 nike

我有一个写成字符串的 XML 标签:

<w:sym w:font="Wingdings" w:char="F0FE"/>

我想从字符串创建一个 XML 标记,而不使用像 AddAttribute() 等显式方法。所以我使用 XmlDocument.LoadXml(),如下所示:

XmlDocument doc = new XmlDocument();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main");
doc.LoadXml(@"<w:sym w:font=""Wingdings"" w:char=""F0FE""/>");

LoadXml() 抛出一个异常,指出前缀“w”未定义。

这让我感到惊讶,因为我使用 NameTable 定义了命名空间。

这里有什么问题?


编辑:我看过很多解释如何读取片段的答案,但我还没有找到一个解释如何使用 namespace 的答案。

最佳答案

这里不是解释为什么它不能与 .NameTable 一起工作,而是如何实现目标的解决方法。

将您的标签包裹在另一个标签中并在那里定义工作区,如下所示:

String fullTagToRead = 
@"<document xmlns:w=""http://schemas.openxmlformats.org/wordprocessingml/2006/main"">"
+ @"<w:sym w:font=""Wingdings"" w:char=""F0FE""/>"
+ @"</document>")

像这样,LoadXml() 就像一个魅力。甚至不需要编写 XML 声明标记。

关于c# - 为什么 `XmlDocument.LoadXml()` 不适用于命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50735768/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com