代码之家  ›  专栏  ›  技术社区  ›  jevakallio

什么是XML空属性,以及如何在linq to xml中处理它们?

  •  0
  • jevakallio  · 技术社区  · 14 年前

    我想读一本 XmlReader 变成一个 XDocument

    //GetContentStructureReader() retrieves the reader from an external source
    XmlReader reader = GetContentStructureReader();
    XDocument.Load(reader);
    

    我在一个特定的数据源中一直得到以下异常:

    用户代码未处理System.ArgumentNullException message=value不能为空。 参数名称:值 源=system.xml.linq PARAMMENT=值 StackTrace: at system.xml.linq.xattribute..ctor(xname名称,对象值) at system.xml.linq.xcontainer.readContentFrom(xmlReader r r) at system.xml.linq.xcontainer.readContentFrom(xmlReader r,loadOptions o) at system.xml.linq.xdocument.load(xmlReader、loadOptions选项) 在system.xml.linq.xdocument.load(xmlReader阅读器)上

    因此,在加载过程中,某个xattribute在某个时刻被初始化为空值。

    XML中的空属性是什么?我试过检查(6兆字节)源文档以更正数据,但没有成功,因为我不知道要查找哪种XML构造。

    有解决办法吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Vitek Karas MSFT    14 年前

    在加载文档期间,空值不应显示为xattribute的值。所以你看到的是意想不到的。您可以在调试器中的异常处停止,以查看调用堆栈和参数值(尤其是xname名称),这可能有助于您在源文档中定位属性。(您也可以在Whatch窗口的某个帧上尝试((IxmlLineInfo)reader),该帧确实定义了读卡器。 在任何情况下,.NET框架中xmlReader的默认实现都不会导致这种情况。所以问题是,您在哪里/如何创建传递给加载方法的xmlReader对象的实例?