将元素添加到xml fie c#

时间:2015-11-03 19:05:31

标签: xmldocument

XmlDocument文件:

<?xml version="1.0"?>
    <config>
      <newsy>
        <category id="sport">
          <source>
            <contelemname>cont</contelemname>
            <refresh>3</refresh>
            <url>http://sport.wp.pl/rss.xml</url>
          </source>
          <source>
            <contelemname>cont</contelemname>
            <refresh>5</refresh>
            <url>http://moto.wp.pl/rss.xml</url>
          </source>
        </category>
      </newsy>
    </config>

如何将新项目添加到此文件,如新来源(网址,刷新)或新类别?或者如何删除类别和来源。

代码以

开头
 XDocument doc = XDocument.Load(path);

但是什么后来?

1 个答案:

答案 0 :(得分:1)

我希望您看看:https://msdn.microsoft.com/en-us/library/ms162365(v=vs.110).aspxhttps://msdn.microsoft.com/en-us/library/system.xml.xmlnode(v=vs.110).aspxhttps://msdn.microsoft.com/en-us/library/system.xml.xmlnode.appendchild(v=vs.110).aspx

Microsoft文档是这类问题的重要来源。

加载Xml

您可以通过字符串

执行此操作
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);

或者使用文件流(您可以使用现在的XDocument)

XmlDocument xmlDocument = new XmlDocument();
using(XmlReader xmlReader = xDocument.CreateReader())
{
     xmlDocument.Load(xmlReader);
}

选择节点

为此你可以使用XPath(http://www.w3schools.com/xsl/xpath_syntax.asp,它返回一个XmlNodeList

XmlNodeList categoryNodes = xmlDocument.SelectNodes("config//newsy//category");

创建新元素

为了创建新元素,您可以使用CreateElement方法(还有其他方法可以创建属性e.t.c.请参阅Microsoft文档。)

XmlNode newSource = xmlDocument.CreateElement("source");
XmlNode newSourceUrl = xmlDocument.CreateElement("url");
newSourceUrl.InnerText = "http://www.test.com";
newSource.AppendChild(newSourceUrl);

这会创建一个新的源元素和一个url元素。 url元素将附加到源元素。

将其添加到类别

将其添加到类别节点。

if (categoryNodes != null && categoryNodes.Count > 0)
     categoryNodes[0].AppendChild(newSource);

搜索要将子项附加到的节点。您还可以检查某个属性,如下所示:

foreach (XmlNode node in categoryNodes)
{
     if (string.Equals(node.Attributes["id"].Value.ToString(), "sport", StringComparison.OrdinalIgnoreCase))
         node.AppendChild(newSource);
}

保存

保存XmlDocument。要将其保存到磁盘:

xmlDocument.Save(path);

新XML

<?xml version="1.0"?>
<config>
    <newsy>
        <category id="sport">
            <source>
                <contelemname>cont</contelemname>
                <refresh>3</refresh>
                <url>http://sport.wp.pl/rss.xml</url>
            </source>
            <source>
                <contelemname>cont</contelemname>
                <refresh>5</refresh>
                <url>http://moto.wp.pl/rss.xml</url>
            </source>
            <source>
                <url>http://www.test.com</url>
            </source>
        </category>
    </newsy>
</config>

我希望这有助于你。