2011-11-22 49 views
0

可能重複:
Can I use predefined namespaces when loading an XDocument?添加命名空間的XML文檔編程

我有如下一個XML文檔中的XML節點:

<g:games> 
</g:games> 

但是,當這個文件來我缺少名稱空間的網址。有沒有辦法在.net 3.5中添加名稱空間url?我正在使用Linq,所以使用XDocument.Load命令來加載xml文件。

在舊版本中,我們可以通過xmlschema來做到這一點,但它不能在XDocument上工作?

+0

@ madd0 - 嗨,我不認爲它是重複的,我只需要添加命名空間,但其他文檔通過創建單獨的表和其他東西來做很多其他的東西。我只需要添加命名空間。 – NoviceMe

回答

3

確實,我提出的答案是不必要的複雜。下面的代碼應該讓你閱讀文檔:

var mgr = new XmlNamespaceManager(new NameTable()); 
mgr.AddNamespace("g", "http://tempuri.org"); 
var ctx = new XmlParserContext(null, mgr, null, XmlSpace.Default); 

using (var reader = XmlReader.Create(@"d:\dev\temp\sample.xml", null, ctx)) 
{ 
    var doc = XDocument.Load(reader); 
} 

誠然,這似乎是一個大量的工作非常少,但唯一的選擇將與XDocument加載之前編輯XML文件,但取決於你從哪裏讀取文件(例如網絡流),這可能是一個更復雜的選項。

+0

對不起,但這又似乎複雜。沒有簡單的方法來添加一個命名空間到XML文件?比將文件加載爲XDocument.Load(「filepath」); ?? – NoviceMe

+0

使用'XmlNamespaceManager'編輯原始文件(我將其作爲編輯添加到原始答案中)的缺點是從文件「外部」管理命名空間的唯一方法(它的名稱...) – madd0