我有一个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
定义命名空间时,这让我感到惊讶。
这里有什么问题?
编辑:我已经看到很多解释如何读取片段的答案,但我没有找到解释如何处理命名空间的答案。
答案 0 :(得分:0)
这不是解释为什么它不能与.NameTable
一起使用,而是解决方法如何实现目标。
将标签包装在另一个标签内并在那里定义工作区,如下所示:
String fullTagToRead =
@"<document xmlns:w=""http://schemas.openxmlformats.org/wordprocessingml/2006/main"">"
+ @"<w:sym w:font=""Wingdings"" w:char=""F0FE""/>"
+ @"</document>")
像这样,LoadXml()
就像一个魅力。甚至不需要编写XML声明标记。