.net 读取XML ,然后赋值,这个不知道,怎么解决?

jiaweihan_001 2012-07-20 10:16:40
如图XML格式:

我想循环这个XML ,然后取每一个<url></url>节点里面的值,然后赋值给,下面这个图,

每一个值,对应一个。




这个是我自己写的读取XML方法,但是不行,


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);
}
}
}
...全文
273 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhengdao1314 2012-07-20
  • 打赏
  • 举报
回复
foreach (XmlNode node in nodeList)
{
node.ChildNodes[0].InnerText;//地址
node.ChildNodes[1].InnerText;//优先
node.ChildNodes[2].InnerText;//频率
node.ChildNodes[3].InnerText;//时间
}
关键是这里,你想要什么效果,就在这里改。
lizhengdao1314 2012-07-20
  • 打赏
  • 举报
回复
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);//时间
}
lizhengdao1314 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();
jiaweihan_001 2012-07-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

赋值
xe2.InnerText= "新值"
然后

xmlDoc.Save(path)
[/Quote]

你这个不行,因为,我是循环上面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

zhangchi_wavenet 2012-07-20
  • 打赏
  • 举报
回复
这个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"));


StarlightHan 2012-07-20
  • 打赏
  • 举报
回复
zhangchi_wavenet 2012-07-20
  • 打赏
  • 举报
回复
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;
}
jiaweihan_001 2012-07-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

if (xe2.Name == "loc")//如果找到
{
html += xe2.InnerText;
}


XmlNodeList nodeList = xmlDoc.SelectSingleNode("urlset").ChildNodes;
改成
XmlNodeLi……
[/Quote]

多谢,我来试试看。
孟子E章 2012-07-20
  • 打赏
  • 举报
回复
赋值
xe2.InnerText= "新值"
然后

xmlDoc.Save(path)
孟子E章 2012-07-20
  • 打赏
  • 举报
回复
if (xe2.Name == "loc")//如果找到
{
html += xe2.InnerText;
}


XmlNodeList nodeList = xmlDoc.SelectSingleNode("urlset").ChildNodes;
改成
XmlNodeList nodeList = xmlDoc.SelectSingleNode("/urlset/url");
孟子E章 2012-07-20
  • 打赏
  • 举报
回复
拼接也是可以的,你拼接的样子给你写的不是一样的,你改成一样的就可以了
孟子E章 2012-07-20
  • 打赏
  • 举报
回复
你绑定不用写代码了。你这样写的意思明显就是错误的

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧