我有這個XML文件,我解析到它的元素並創建一個自定義對象模塊的列表。XML linq查詢列出第一個元素,但不是全部
XDocument kobra = XDocument.Load(new StringReader(results.OuterXml));
XNamespace ns = "#RowsetSchema";
var kobraNodeList = from s in kobra.Descendants(ns + "row")
select new Module
{
id = s.Attribute("ows_ID").Value,
name = s.Attribute("ows_Title").Value,
sourceFile = s.Attribute("ows_Source_x0020_Message_x0020_File_").Value,
scope = Scope.KOBRA,
component = string.Empty
};
,這裏是我的模塊結構:
public struct Module
{
public string name;
public Scope scope;
public string component;
public int wordCound;
public string id;
public string sourceFile;
}
的代碼工作正常,但事情變得奇怪,當我嘗試了var kobraNodeList轉換成模塊的列表,我在AddRange
得到System.NullReferenceException
行:
this.moduleList = new List<Module>;
this.moduleList.AddRange(kobraNodeList);
當試圖調試,我注意到,雖然kobraNodeList.Count()
也返回System.NullReferenceException
,一個kobraNodeList.Any()
返回true
和kobraNodeList.First()
返回一個完美有效和正確的模塊結構與所需的數據。
的XML文件是有效的,如果我更換與此LINQ查詢:
var kobraNodeList = from s in kobra.Descendants(ns + "row")
select s;
我得到的XElement的有效列表,我可以Count()
確定。 有人可以解釋我有什麼問題嗎?順便說一句,我使用.NET 3.5。
Holy sh **你是對的,我100%肯定XML文件是完整的所有屬性,不可能是原因。謝謝! – Antoine