来自XDocument构造函数的意外异常?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

这样做很好:

XDocument xdoc = new XDocument(
   new XDeclaration("1.1", "UTF-8", "yes"),
   new XProcessingInstruction("foo", "bar"),
   new XElement("test"));

但是,如果我将其更改为将“params数组”显式地传递为数组:

object[] content = new object[] {
   new XDeclaration("1.1", "UTF-8", "yes"),
   new XProcessingInstruction("foo", "bar"),
   new XElement("test")
};
xdoc = new XDocument(content);

它失败了,因为:

System.ArgumentException: Non white space characters cannot be added to content.

这两个例子不是完全等价的吗?

提问于
用户回答回答于

当您使用第一个方法时,您使用的是XDocument的重载,它首先接受XStatement,然后对内容使用Params。然而,当您使用第二种方法时,您使用的是重载,它对内容使用一个参数。您的对象[]数组中的X声明是作为内容传递的,这就是它正在爆炸的地方。

见这里:http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.xdocument.aspx

用户回答回答于

假定:

var xmlString = "<some-xml />";

这是失败的:

var doc = new XDocument(xmlString);

这样做是可行的:

var doc = XDocument.Parse(xmlString);

扫码关注云+社区