簡體   English   中英

為什么`XmlDocument.LoadXml()`無法與名稱空間一起使用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM