【问题标题】:editing xml using C#使用 C# 编辑 xml
【发布时间】:2012-03-07 19:18:08
【问题描述】:

我有那个 xml 文档:

<?xml version="1.0" encoding="utf-8" ?>

<reminders>
  <reminder>
    <Title>Alarm1</Title>
    <Description>Desc1</Description>
    <Time>03/07/2012 10:11AM</Time>
    <snooze>1</snooze>
    <repeat>None</repeat>
  </reminder>
  <reminder>
    <Title>Alarm2</Title>
    <Description>Desc2</Description>
    <Time>03/07/2012 10:11AM</Time>
    <snooze>15</snooze>
    <repeat>Daily</repeat>
  </reminder>
</reminders>

并说我想创建一个完整的提醒孩子,例如:

  <reminder>
    <Title>NEW-Alarm</Title>
    <Description>New-Desc</Description>
    <Time>03/07/2012 10:11AM</Time>
    <snooze>15</snooze>
    <repeat>Daily</repeat>
  </reminder>

如何在 C# 中做到这一点?

而且我还想编辑一些像 from 的孩子:

<Title>NEW-Alarm</Title>

成为

<Title>Modified-NEW-Alarm</Title>

我对 XML 很陌生,我真的尽了最大的努力,实际上我打开了 13 个 xml 网页,但没有一个有我真正需要的,所以我真的很感谢你的帮助。

【问题讨论】:

  • -1 - “打开 13 个网页”尚未显示您尝试过但遇到问题的任何示例代码。
  • 我尝试了很多代码示例,但都没有成功。
  • 那么,你没有打开足够多的网页。
  • 通常有趣的是为什么反对票,但我真的很感兴趣为什么 +1。 @R.Vector,“没有工作”很难帮助 - 样本会完全做你想要的,这是非常罕见的。 SO 是帮助解决具体问题 - 展示一个并努力解决,您会得到具体有用的答案。

标签: c# xml xml-parsing


【解决方案1】:

我会看看使用 XDocument。您可能想在网上搜索使用它创建 XML 的示例,但不可阻挡的 Jon Skeet 的这个答案是一个很好的起点:

XML file creation using XDocument in C#

希望对您有所帮助。

另见这些链接:

http://www.codeproject.com/Articles/169598/Parse-XML-Documents-by-XMLDocument-and-XDocument

http://www.leghumped.com/blog/2009/06/30/c-xml-with-xdocuments/

http://forums.asp.net/t/1736899.aspx/1?Help+using+XDocument+in+LINQ+with+ASP+Net+C+

【讨论】:

    【解决方案2】:

    使用XDocument class 加载文档

    添加一个元素(使用您的数据编辑 PATH):

    XElement newEl = new XElement(new XElement("reminder",
                                    new XElement("Title", "NEW-Alarm"),
                                    new XElement("Description", "New-Desc"),
                                    new XElement("Time", "03/07/2012 10:11AM"),
                                    new XElement("snooze", "15"),
                                    new XElement("repeat", "Daily")));
                        doc.Root.Add(newEl);
                        doc.Save(PATH);
    

    要进行更改,我们必须首先找到元素(使用 LINQ),然后应用 SetValue 方法。 http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.setvalue.aspx

    【讨论】:

    • 感谢您的回答,但我收到一个错误:System.NullReferenceException:对象引用未设置为对象的实例。在 doc.Root.Add(newEl);
    • 您必须加载您的文档。参见 XDocument.Load() 方法
    【解决方案3】:

    您需要查看 XDocument 作为打开 XML 文档的一种方式,然后查看 XElement 的文档以了解构建节点是多么容易。

    每个文档页面都有很好的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 2011-01-06
      • 1970-01-01
      相关资源
      最近更新 更多