当前位置:编程学习 > C#/ASP.NET >>

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

如图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);
                }
            }
        }
--------------------编程问答-------------------- if (xe2.Name == "loc")//如果找到
                {
                    html += xe2.InnerText;
                }


XmlNodeList nodeList = xmlDoc.SelectSingleNode("urlset").ChildNodes;
改成
XmlNodeList nodeList = xmlDoc.SelectSingleNode("/urlset/url"); --------------------编程问答-------------------- 赋值
xe2.InnerText= "新值"
然后

xmlDoc.Save(path) --------------------编程问答--------------------
引用 1 楼  的回复:
if (xe2.Name == "loc")//如果找到
                {
                    html += xe2.InnerText;
                }


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


多谢,我来试试看。 --------------------编程问答--------------------  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"));


--------------------编程问答--------------------
引用 2 楼  的回复:
赋值
xe2.InnerText= "新值"
然后

xmlDoc.Save(path)


你这个不行,因为,我是循环上面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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,