.net 读取XML ,然后赋值,这个不知道,怎么解决?
如图XML格式:我想循环这个XML ,然后取每一个<url></url>节点里面的值,然后赋值给,下面这个图,
每一个值,对应一个。
这个是我自己写的读取XML方法,但是不行,
--------------------编程问答-------------------- if (xe2.Name == "loc")//如果找到
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("/PingXml/addsitemap.xml"));
XmlNodeList nodeList = xmlDoc.SelectSingleNode("urlset").ChildNodes;//获取urlset节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
//如果下面有子节点在下走
XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "loc")//如果找到
{
Response.Write(xe2.InnerText);
}
}
}
{
html += xe2.InnerText;
}
XmlNodeList nodeList = xmlDoc.SelectSingleNode("urlset").ChildNodes;
改成
XmlNodeList nodeList = xmlDoc.SelectSingleNode("/urlset/url"); --------------------编程问答-------------------- 赋值
xe2.InnerText= "新值"
然后
xmlDoc.Save(path) --------------------编程问答--------------------
多谢,我来试试看。 --------------------编程问答-------------------- public DataTable GetKeyValues(string path)
{
DataTable mDateDT = new DataTable();
DataColumn dc = null;
dc = mDateDT.Columns.Add("ID", Type.GetType("System.Int32"));
dc.AutoIncrement = true;//自动增加
dc.AutoIncrementSeed = 1;//起始为1
dc.AutoIncrementStep = 1;//步长为1
dc.AllowDBNull = false;//
dc = mDateDT.Columns.Add("Value", Type.GetType("System.String"));
dc = mDateDT.Columns.Add("DateValue1", Type.GetType("System.String"));
dc = mDateDT.Columns.Add("DateValue2", Type.GetType("System.String"));
DataRow newRow;
if (System.IO.File.Exists(path))
{
XmlDocument xdoc = new XmlDocument();
xdoc.Load(path);
XmlNodeList eles = xdoc.DocumentElement.ChildNodes;
foreach (XmlElement xmlElement in eles)
{
newRow = mDateDT.NewRow();
newRow["Value1"] = xmlElement["loc"].InnerText;
newRow["Value2"] = xmlElement["lastmod"].InnerText;
newRow["Value3"] = xmlElement["changefreq"].InnerText;
newRow["Value4"] = xmlElement["priority"].InnerText;
mDateDT.Rows.Add(newRow);
}
return mDateDT;
}
return null;
} --------------------编程问答-------------------- 看看介个http://www.jb51.net/article/16304.htm --------------------编程问答-------------------- 这个dc = mDateDT.Columns.Add("Value", Type.GetType("System.String"));
dc = mDateDT.Columns.Add("DateValue1", Type.GetType("System.String"));
dc = mDateDT.Columns.Add("DateValue2", Type.GetType("System.String"));
改成
dc = mDateDT.Columns.Add("Value1", Type.GetType("System.String"));
dc = mDateDT.Columns.Add("Value2", Type.GetType("System.String"));
dc = mDateDT.Columns.Add("Value3", Type.GetType("System.String"));
dc = mDateDT.Columns.Add("Value4", Type.GetType("System.String"));
--------------------编程问答--------------------
你这个不行,因为,我是循环上面XML ,然后找到<url>节点下面值,然后,前台,我循环绑定,这个url节点里面的值,
效果就是这个样子:
URL:http://baidu.com 优先:0.1 频率:总是 更改时间:2012-07-20
URL:http://baidu1.com 优先:0.2 频率:总是 更改时间:2012-07-20
URL:http://baidu2.com 优先:0.3 频率:总是 更改时间:2012-07-20
--------------------编程问答-------------------- XmlNodeList nodeList = xmldoc.SelectNodes("/urlset/url/loc");
StringBuilder locString = new StringBuilder();
foreach (XmlNode node in nodeList)
{
locString.Append(node.InnerText);
}
xe2.InnerText=locString.ToString(); --------------------编程问答-------------------- XmlNodeList nodeList = xmldoc.SelectNodes("/urlset/url");
StringBuilder locString = new StringBuilder();
StringBuilder IsFrist = new StringBuilder();
StringBuilder Funk = new StringBuilder();
StringBuilder TimeString = new StringBuilder();
foreach (XmlNode node in nodeList)
{
locString.Apppend(node.ChildNodes[0].InnerText);//地址
IsFrist.Apppend(node.ChildNodes[1].InnerText);//优先
Funk.Apppend(node.ChildNodes[2].InnerText);//频率
TimeString.Apppend(node.ChildNodes[3].InnerText);//时间
}
--------------------编程问答-------------------- foreach (XmlNode node in nodeList)
{
node.ChildNodes[0].InnerText;//地址
node.ChildNodes[1].InnerText;//优先
node.ChildNodes[2].InnerText;//频率
node.ChildNodes[3].InnerText;//时间
}
关键是这里,你想要什么效果,就在这里改。 --------------------编程问答-------------------- 你绑定不用写代码了。你这样写的意思明显就是错误的
--------------------编程问答-------------------- 拼接也是可以的,你拼接的样子给你写的不是一样的,你改成一样的就可以了 --------------------编程问答--------------------
补充:.NET技术 , ASP.NET