【问题标题】:Replacing the innertext of an Xml node/element替换 Xml 节点/元素的内部文本
【发布时间】:2012-02-07 10:14:15
【问题描述】:

首先这是 C#。我正在为 NHS 中的一小部分同事创建一个互联网仪表板。 下面是一个示例 xml 文件,我需要在其中更改其内部文本。我需要替换特定元素,例如“Workshop1”。因为我们有一些研讨会,所以我不能使用通用编写器,因为它将用下面的这一位代码替换 XML 文档上的所有信息。

<?xml version="1.0" ?> 
   <buttons>
      <workshop1>hello</workshop1> 
      <url1>www.google.co.uk</url1> 

我正在使用 switch case 来选择一个特定的研讨会,您可以在其中更改名称并添加研讨会的 URL,然后使用下面的代码将替换整个文档。

public void XMLW()
    {
        XmlTextReader reader = new XmlTextReader("C:\\myXmFile.xml");
        XmlDocument doc = new XmlDocument(); 

        switch (comboBox1.Text)

        {
            case "button1":


                doc.Load(reader); //Assuming reader is your XmlReader 
                doc.SelectSingleNode("buttons/workshop1").InnerText = textBox1.Text;
                reader.Close();
                doc.Save(@"C:\myXmFile.xml");
                break;


        }


    }

所以为了澄清一下,我希望我的 C# 程序在 XML 文档中搜索找到元素“Workshop1”并将内部文本替换为来自文本框的文本。并且能够保存它而不用一个节点替换整个文档。感谢您的关注。

【问题讨论】:

  • 您是否有理由不使用XDocument 或至少不使用XmlDocument API?如果您必须处理 huge XML 文件,通常只使用 XmlReader / XmlWriter
  • 好吧,我是 C# 的新手。因此,为了让通用程序运行,我将代码组合在一起,然后当我看到它工作时,我可以更改代码以使其更高效。至少通过这种方式,我可以了解丑陋和干净的做事方式之间的区别,并了解两者的优势。不过感谢您的指导,我现在会考虑使用 XMLReader/XMLWriter。
  • 我的建议是不要使用XmlReader / XmlWriter...

标签: c# xml winforms xmlreader xmlwriter


【解决方案1】:

使用 XmlDocument 和 XPath 你可以做到这一点

XmlDocument doc = new XmlDocument();
doc.Load(reader); //Assuming reader is your XmlReader
doc.SelectSingleNode("buttons/workshop1").InnerText = "new text";

您也可以使用doc.Save 来保存文件。

MSDN 上阅读有关XmlDocument 的更多信息。

编辑

要保存文档,请执行此操作

doc.Save(@"C:\myXmFile.xml"); //This will save the changes to the file.

希望对你有所帮助。

【讨论】:

  • 我认为它的工作。现在唯一的问题是它不会让我保存文档。我正在使用“doc.Save;”但是它出现了一个错误“只有赋值、调用、递增、递减和新对象表达式可以用作语句。”这是因为我没有使用 XMLWriter 吗?要么?我已经在这个程序上工作了很长时间,可能我是个白痴。如果你看上面,你可以看到它被修改了。
  • 编辑了上面的代码,以显示它现在可以正常工作并供未来用户参考。感谢 Amar Palsapure。
  • 一切顺利并顺利进行时非常棒:)
猜你喜欢
  • 2011-10-15
  • 1970-01-01
  • 2020-06-30
  • 2013-01-15
  • 1970-01-01
  • 2015-11-16
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多