我正在研究一些代碼來讀取和解析XML文件的節點,並且文件的佈局很複雜(至少,對我來說似乎是這樣 - 沒有完成和XML解析,直到這個項目)。解析一個「複雜」的XML文件
爲XML文件的格式與此類似:
<Parameters>
<General>
<Name>Name of this parameter</Name>
<Caption>Information about the parameter</Caption>
<GroupName>A Small Group of parameters</GroupName>
<Value>1</Value>
<Type>Boolean</Type>
<Description>Some description</Description>
<Dependencies>
<And>
<GroupName>Some other group of parameters</GroupName>
<Name>The parameter this one is dependent on</Name>
</And>
<Or>
<GroupName>Some other group of parameters</GroupName>
<Name>The parameter this one might be dependent on</Name>
</Or>
</Dependencies>
</General>
</Parameters>
我解析這樣的文件:
XmlDocument xDoc = new XmlDocument();
Assembly _assembly = Assembly.GetExecutingAssembly();
Stream s = _assembly.GetManifestResourceStream(@"NameOfAssembly.NameOfFile.xml");
xDoc.Load(s);
xmlTests = xDoc.SelectNodes("/Parameters/General");
foreach (XmlNode rootType in xmlTests)
{
switch (rootType.Name.ToString())
{
case "General":
name = rootType["Name"].InnerText;
caption = rootType["Caption"].InnerText;
groupName = rootType["GroupName"].InnerText;
mandatory = rootType["Mandatory"].InnerText;
value = Convert.ToInt32(rootType["Value"].InnerText);
typeOfData = rootType["Type"].InnerText;
description = rootType["Description"].InnerText;
//groupDepAnd = rootType["Dependencies/And/GroupName"].InnerText;
//XmlNodeList dependenciesList = rootType.SelectNodes("Parameters/General/Dependencies/And");
//foreach (XmlNode dependenciesAndNode in dependenciesList)
//{
//groupDepAnd = dependenciesAndNode["GroupName"].InnerText;
//namesDepAnd = dependenciesAndNode["Names"].InnerText;
//}
//dependenciesList = rootType.SelectNodes("Parameters/General/Dependencies/Or");
//foreach (XmlNode dependenciesOrNode in dependenciesList)
//{
//groupDepOr = dependenciesOrNode["GroupName"].InnerText;
//namesDepOr = dependenciesOrNode["Names"].InnerText;
//}
/* send values to object constructor */
break;
default:
break;
}
}
/*close Stream, xDoc and such */
當我分析我的問題出現(或試圖根據具體情況來解析)依賴關係節點。我不完全確定如何解析它們中的每一個(來自And的GroupName和Name,然後將來自Or的GroupName和Name)解析爲字符串。我已經評論過似乎不工作的線路,我希望他們如何。
我已經註釋掉了的foreach循環,顯然通讀了通用節點列表中的所有依賴關係。並且啓動「groupDepAnd =」(第18行)的行無法給我一個空引用異常。
我試圖正確解析這個XML文件嗎?我究竟做錯了什麼?任何和所有的幫助將不勝感激。正如我前面所說,我對XML的使用非常有限。