如何使用linq将命名空间添加到xml文件

时间:2011-11-18 20:45:32

标签: c# xml

我正在加载像这样的xml文件:

XDocument xDoc = XDocument.Load("test.xml");

test.xml文件包含<o:abc> <o:bcd>等节点 但o没有宣布。我试过用这个:

XDocument xDoc = XDocument.Load("C:\\Documents and Settings\\c0kohka\\Desktop\\test.xml");
XNamespace o = "http:\\abc.html" ;

它不起作用给出错误前缀o未声明。谁能告诉我怎么做?

3 个答案:

答案 0 :(得分:1)

听起来你的XML无效。

Namespaces in an XML document必须在文档中声明,方法是在父元素上写xmlns:o="http://...

答案 1 :(得分:1)

在您定义XNamespace后,您需要使用

XDocument xDoc = XDocument.Load("C:\\Documents and Settings\\c0kohka\\Desktop\\test.xml");
XNamespace o = "http:\\abc.html" ;  // this seems odd - usually, this would be o = "http://abc.company.com" or something

XElement someElement = xDoc.Descendants(o + "SomeElement");

或类似的东西 - 没有看到XML,它只是猜测充其量....

答案 2 :(得分:0)

你的.xml文件无效。因此,您必须“修复”.xml文件而不是其他任何内容。