如何使用XmlReader读取短标记XML而不添加结束元素?

时间:2014-03-31 10:41:50

标签: c# .net xml .net-2.0

我的XML看起来像这样(从文件中读取):

<root>
  <date month="November" year="2001"/>
</root>

我正在尝试编辑日期元素中的年份属性值,假设为“3000”。 我正在使用XmlDocument和XmlReader类来编辑这个属性,如下所示:

XmlDocument xml = new XmlDocument();            
using (XmlReader reader = XmlReader.Create(xmlPath))
      xml.Load(reader);

问题是,XmlReader读取XML如下:

<root>
      <date month="November" year="2001"> </date>
</root>

意思是,它将结束元素添加到日期元素中。 我稍后使用Save方法保存已编辑的XML。

我需要最终的XML与原始XML一样使用短标签。 有没有办法在不添加结束元素的情况下使用XmlReader?

2 个答案:

答案 0 :(得分:3)

如果XML文件不是很大,您可以使用XElement进行就地编辑:

XElement xml = XElement.Load("test.xml");
var date = xml.Element("date");
date.Attribute("year").SetValue("3000");
xml.Save("test.xml");

答案 1 :(得分:0)

试试这个解决你的问题。我只是更新年份属性,你可以相应地改变

    XmlDocument myXmlDocument = new XmlDocument();
        myXmlDocument.Load(Server.MapPath("~/Book.xml"));
        XmlNode node;
        node = myXmlDocument.DocumentElement;

        foreach (XmlNode node1 in node.ChildNodes)
        {
            if (node1.Name == "date")
            {
                node1.Attributes["year"].Value = "2005";
            }
        }
        myXmlDocument.Save(Server.MapPath("~/Book1.xml"));