用xelement
XElement data=XElement.Parse(xml);
XElement paramInfo= data.Element("body").Element("body").Elements("paramInfo");
foreach(var i in paramInfo)
{
//这里判断paramCode是id的给id 是sex的给sex
节点就是.Element() 属性就是.Attribute("")
他们都是XElement类 很简单
}
XElement data=XElement.Parse(xml);
XElement paramInfo= data.Element("body").Element("body").Elements("paramInfo");
foreach(var i in paramInfo)
{
//这里判断paramCode是id的给id 是sex的给sex
节点就是.Element() 属性就是.Attribute("")
他们都是XElement类 很简单
}
/// <summary>
/// Load xml file
/// </summary>
/// <param name="xmlFilePath"></param>
/// <returns></returns>
private void LoadXML(string filePath, XNamespace nameSpace)
{
if (string.IsNullOrEmpty(filePath))
{
MessageBox.Show("Please choose the xml file first!");
} //casesElement = XElement.Load(filePath);
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
casesElement = XElement.Load(new XmlNodeReader(doc));
//ns = "urn:perseus:profile:plugin";
ns = nameSpace;
}
/// <summary>
/// Get module name
/// </summary>
/// <returns></returns>
private Dictionary<string, Dictionary<string, int>> GetModuleNameDic()
{
if (casesElement == null)
{
throw new Exception("Please load xml file first!");
} Dictionary<string, Dictionary<string, int>> dic = new Dictionary<string, Dictionary<string, int>>();
var docModule = from item in casesElement.Descendants(ns + "module")
select item.Element(ns + "displayName").Value;
foreach (var itemModule in docModule)
{
string moduleName = string.Empty;
if (!(itemModule + "").Equals(""))
{
moduleName = itemModule;
dic.Add(moduleName, GetSuiteNameLst(moduleName));
}
}
return dic;
}
XmlDocument doc = new XmlDocument();
doc.Load(@"D:\visual studio 2010\Projects\HelloWorld\TestPostData\bin\Debug\test.xml");
XElement xElement = XElement.Load(new XmlNodeReader(doc)); var paramInfos = from paramInfo in xElement.Elements("body").Elements("paramInfo")
select paramInfo;
Dictionary<string, string> dicKeyValue = new Dictionary<string, string>();
foreach (var paramInfo in paramInfos)
{
var keyItem = from item in paramInfo.Elements("paramCode") select item;
string key = keyItem.FirstOrDefault().Value; var valueItem = from item in paramInfo.Elements("paramValue").Elements("value") select item;
string value = valueItem.FirstOrDefault().Value; dicKeyValue.Add(key, value);
} AA aa = new AA();
aa.Id = dicKeyValue.ContainsKey("Id") ? dicKeyValue["Id"] : string.Empty;
aa.sex = dicKeyValue.ContainsKey("sex") ? dicKeyValue["sex"] : string.Empty;
那你看看我这种写法哪有问题?
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (XmlElement item in xmlDocument.GetElementsByTagName("paramInfo"))
{
dict[item["paramCode"].InnerText] = item["paramValue"].FirstChild.Value;
}
AA aa=new AA()
aa.Id=dict["ID"];
aa.sex=dict["sex"];
<paramInfo>
<paramCode>sex</paramCode>
<paramValue>
<value>1</value>
<value>2</value>
</paramValue >
</paramInfo>
附带两个值的你的那种写法好像也不行