以编程方式将命名空间添加到xml文档

时间:2011-11-22 15:56:51

标签: c# xml

  

可能重复:
  Can I use predefined namespaces when loading an XDocument?

我在xml文档中有以下xml节点:

<g:games>
</g:games>

但是当这个文件来找我时它缺少名称空间url。有没有办法在.net 3.5中添加命名空间URL?我使用Linq所以使用XDocument.Load命令加载xml文件。

在旧版本中,我们可以通过xmlschema执行此操作,但它不能用于XDocument吗?

1 个答案:

答案 0 :(得分: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文件,但取决于你从哪里读取文件(a例如,网络流,这可能是一个更复杂的选择。