哪为老师帮忙写个方法吧,xml属性读写的。

时间:2022-10-20 19:32:02
环境VS2008SP1 ,xml文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<khda>
  <view>
    <khid pshow="1" width="30"/>
    <khname pshow="1" width="60"/>
  </view>  
</khda>


求两个方法:
1,读取给定节点的 某个属性。如给定节点:khda\view\khid,读取属性pswhow的值或width的值。
2,更改某给定节点的 某个属性。如给定节点:khda\view\khid,更改属性pswhow的值或width的值(当节点或属性不存在时,增加节点或属性。)。

非常感谢!


11 个解决方案

#1


XmlDocument xml = new XmlDocument();
  xml.Load("Test.xml");
  XmlNode xn = xml.SelectSingleNode("khda/view");
  foreach (XmlNode xn1 in xn.ChildNodes)
  {
  Console.WriteLine(xn1.Attributes[""].Value);
  }
  Console.ReadLine();
或XElement xe= XElement.Parse(xml);
var query = from x in xe.Descendants("")
  select new
  {
  w=y.Attribute("width").Value,
  ...
  };

#2


   string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<khda>
  <view>
    <khid pshow=""1"" width=""30""/>
    <khname pshow=""1"" width=""60""/>
  </view>  
</khda>";
            XElement root = XElement.Parse(xml);
            var query = root.Descendants("view").Elements("khid").Select(x => x.Attribute("width").Value).ToList();
            foreach (string s in query)
                Console.WriteLine(s);
30

#3


Console.WriteLine(xn1.Attributes[""].Value);
这句是什么意思,是要便利所有属性吗,还是我把属性名写在""就可以一句搞定。

#4


该回复于2011-02-09 08:51:35被版主删除

#5


另外更改怎么写呢,请吴老师再详解。

#6


http://topic.csdn.net/u/20110111/20/c576c655-c2ed-4665-b267-374a37213ad4.html

#7


引用 6 楼 wuyq11 的回复:
http://topic.csdn.net/u/20110111/20/c576c655-c2ed-4665-b267-374a37213ad4.html

还是挺难懂的,我再研究研究吧。
哪位老师有空,直接帮我写两个方法吧。

#8


C#中操作XML的方式很多,给你一段很简单的代码,你可以在此基础上进行修改,这短代码已经过测试。

//取得属性的值
 XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load("test.xml");

            XmlNode node = xmlDocument.SelectSingleNode("/khda/view/khid");

            foreach (XmlAttribute item in node.Attributes)
            {
                MessageBox.Show(item.Value);
            }

//更改属性的值
XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load("test.xml");
            XmlNode node = xmlDocument.SelectSingleNode("/khda/view/khname");

            node.Attributes["pshow"].InnerText = "测试1";
            node.Attributes["width"].InnerText = "测试2";

            xmlDocument.Save("test.xml");

#9


该回复于2011-02-09 13:54:39被版主删除

#10


Xpath是个小语法,要基本掌握。

#11


不好意思,刚结贴。

#1


XmlDocument xml = new XmlDocument();
  xml.Load("Test.xml");
  XmlNode xn = xml.SelectSingleNode("khda/view");
  foreach (XmlNode xn1 in xn.ChildNodes)
  {
  Console.WriteLine(xn1.Attributes[""].Value);
  }
  Console.ReadLine();
或XElement xe= XElement.Parse(xml);
var query = from x in xe.Descendants("")
  select new
  {
  w=y.Attribute("width").Value,
  ...
  };

#2


   string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<khda>
  <view>
    <khid pshow=""1"" width=""30""/>
    <khname pshow=""1"" width=""60""/>
  </view>  
</khda>";
            XElement root = XElement.Parse(xml);
            var query = root.Descendants("view").Elements("khid").Select(x => x.Attribute("width").Value).ToList();
            foreach (string s in query)
                Console.WriteLine(s);
30

#3


Console.WriteLine(xn1.Attributes[""].Value);
这句是什么意思,是要便利所有属性吗,还是我把属性名写在""就可以一句搞定。

#4


该回复于2011-02-09 08:51:35被版主删除

#5


另外更改怎么写呢,请吴老师再详解。

#6


http://topic.csdn.net/u/20110111/20/c576c655-c2ed-4665-b267-374a37213ad4.html

#7


引用 6 楼 wuyq11 的回复:
http://topic.csdn.net/u/20110111/20/c576c655-c2ed-4665-b267-374a37213ad4.html

还是挺难懂的,我再研究研究吧。
哪位老师有空,直接帮我写两个方法吧。

#8


C#中操作XML的方式很多,给你一段很简单的代码,你可以在此基础上进行修改,这短代码已经过测试。

//取得属性的值
 XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load("test.xml");

            XmlNode node = xmlDocument.SelectSingleNode("/khda/view/khid");

            foreach (XmlAttribute item in node.Attributes)
            {
                MessageBox.Show(item.Value);
            }

//更改属性的值
XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load("test.xml");
            XmlNode node = xmlDocument.SelectSingleNode("/khda/view/khname");

            node.Attributes["pshow"].InnerText = "测试1";
            node.Attributes["width"].InnerText = "测试2";

            xmlDocument.Save("test.xml");

#9


该回复于2011-02-09 13:54:39被版主删除

#10


Xpath是个小语法,要基本掌握。

#11


不好意思,刚结贴。