我有一个写为字符串的 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
定义了命名空间。这里有什么问题?
编辑 :我看过很多解释如何读取片段的答案,但我还没有找到解释如何处理命名空间的答案。
最佳答案
这里不是解释为什么它不适用于 .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/