![](/img/trans.png)
[英]Why does C# XmlDocument.LoadXml(string) fail when an XML header is included?
[英]Why does `XmlDocument.LoadXml()` not work with namespace?
我有一個寫為字符串的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
一起.NameTable
,而是一種解決方法如何實現目標。
將標簽包裝在另一個標簽內,然后在其中定義工作區,如下所示:
String fullTagToRead =
@"<document xmlns:w=""http://schemas.openxmlformats.org/wordprocessingml/2006/main"">"
+ @"<w:sym w:font=""Wingdings"" w:char=""F0FE""/>"
+ @"</document>")
這樣, LoadXml()
就像一個飾物。 甚至沒有必要編寫XML聲明標簽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.