XmlDocument读xml
xml 如下<content>
<head>
<callSystem>1111</callSystem>
</head>
<body>
<paramInfo>
<paramCode>Id</paramCode>
<paramValue>
<value>1</value>
</paramValue >
</paramInfo>
<paramInfo>
<paramCode>易做图</paramCode>
<paramValue>
<value>2</value>
</paramValue >
</paramInfo>
</body>
</content>
实体类
public class AA
{
public string Id{get;set;}
public string 易做图{get;set;}
}
paramCode 对应实体类 paramValue对应实体类的值
这是方法
public AA XmlToObject(string xml)
{
XmlDocument doc=new XmlDocument();
doc.LoadXML(xml);
////往下要怎么读这个xml到实体类啊
}
求大神帮忙给个例子!非常感谢
--------------------编程问答-------------------- 用xelement
XElement data=XElement.Parse(xml);
XElement paramInfo= data.Element("body").Element("body").Elements("paramInfo");
foreach(var i in paramInfo)
{
//这里判断paramCode是id的给id 是易做图的给易做图
节点就是.Element() 属性就是.Attribute("")
他们都是XElement类 很简单
} --------------------编程问答-------------------- 可以使用Linq to XML,google一下一堆例子,贴一下我自己项目中的,你照葫芦画瓢吧
/// <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>--------------------编程问答-------------------- 参考:http://msdn.microsoft.com/zh-cn/library/eh3exdc4(v=vs.90).aspx --------------------编程问答-------------------- 没太看明白你这个例子! 能不能具体给简单按照我提供的给写一个啊! 非常谢谢 --------------------编程问答-------------------- data.Element("body").Element("body").Elements("paramInfo"); 这句话是什么意思啊? --------------------编程问答-------------------- 给你写了一个:
/// 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.易做图 = dicKeyValue.ContainsKey("易做图") ? dicKeyValue["易做图"] : 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.易做图=dict["易做图"]; --------------------编程问答--------------------
自己调试一下不就清楚了吗? --------------------编程问答--------------------
如果 这种情况
<paramInfo>
<paramCode>易做图</paramCode>
<paramValue>
<value>1</value>
<value>2</value>
</paramValue >
</paramInfo>
附带两个值的你的那种写法好像也不行 --------------------编程问答--------------------
如果 这种情况
<paramInfo>
<paramCode>易做图</paramCode>
<paramValue>
<value>1</value>
<value>2</value>
</paramValue >
</paramInfo>
附带两个值的你的那种写法好像也不行
你只要明白了该如何处理这种东西就可以了,这个不是万能的,只是针对你上面给的xml写的代码,如果你需要万能的,要用到反射技术了。
补充:.NET技术 , C#