C# 如何使用XmlReader在不添加结束元素的情况下读取短标记XML?

C# 如何使用XmlReader在不添加结束元素的情况下读取短标记XML?,c#,.net,xml,.net-2.0,C#,.net,Xml,.net 2.0,我的XML如下所示(从文件中读取): 问题是,XmlReader读取XML的方式如下: XmlDocument xml = new XmlDocument(); using (XmlReader reader = XmlReader.Create(xmlPath)) xml.Load(reader); <root> <date month="November" year="2001"> </date> <

我的XML如下所示(从文件中读取):

问题是,XmlReader读取XML的方式如下:

XmlDocument xml = new XmlDocument();            
using (XmlReader reader = XmlReader.Create(xmlPath))
      xml.Load(reader);
<root>
      <date month="November" year="2001"> </date>
</root>

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

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

如果XML文件不是很大,您可以使用一个适当的编辑器对其进行编辑:

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

如果XML文件不是很大,您可以使用一个文件来就地编辑它:

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

如果XML文件不是很大,您可以使用一个文件来就地编辑它:

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

如果XML文件不是很大,您可以使用一个文件来就地编辑它:

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

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

    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"));

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

    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"));

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

    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"));

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

    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"));


如果您只是在阅读,那么您可以使用
reader.isemptyelment
来检查;但从根本上说,它们的意思是相同的,我在阅读、编辑和保存。我知道它们的意思是一样的,但我需要编辑的XML与原始XML一样包含空元素。如果您只是在阅读,那么可以使用
reader.IsEmptyElement
来检查这一点;但从根本上说,它们的意思是相同的,我在阅读、编辑和保存。我知道它们的意思是一样的,但我需要编辑的XML与原始XML一样包含空元素。如果您只是在阅读,那么可以使用
reader.IsEmptyElement
来检查这一点;但从根本上说,它们的意思是相同的,我在阅读、编辑和保存。我知道它们的意思是一样的,但我需要编辑的XML与原始XML一样包含空元素。如果您只是在阅读,那么可以使用
reader.IsEmptyElement
来检查这一点;但从根本上说,它们的意思是相同的,我在阅读、编辑和保存。我知道它们的意思是一样的,但我需要编辑的XML与原始XML一样包含空元素。它在.Net 2.0中可用吗?@Tom否,它是作为LINQ框架的一部分添加到.Net 3.5中的。如果您必须针对某个特定的.NET运行时,那么值得添加它作为您问题的标记。我添加了它,出于某种原因它被删除了。我在.Net 2.0中重新添加了它?@Tom否,它是作为LINQ框架的一部分添加到.Net 3.5中的。如果您必须针对某个特定的.NET运行时,那么值得添加它作为您问题的标记。我添加了它,出于某种原因它被删除了。我在.Net 2.0中重新添加了它?@Tom否,它是作为LINQ框架的一部分添加到.Net 3.5中的。如果您必须针对某个特定的.NET运行时,那么值得添加它作为您问题的标记。我添加了它,出于某种原因它被删除了。我在.Net 2.0中重新添加了它?@Tom否,它是作为LINQ框架的一部分添加到.Net 3.5中的。如果您必须针对某个特定的.NET运行时,那么值得添加它作为您问题的标记。我添加了它,出于某种原因它被删除了。我又加了一次