C# 在xml文件中写入内部文本

C# 在xml文件中写入内部文本,c#,asp.net,xml,innertext,C#,Asp.net,Xml,Innertext,如何在xml文件的内部文本中编写内容 我能够从文件中读取特殊标记,如下所示: protected void Page_Load(object sender, EventArgs e) {// this is to read from xml. if (!Page.IsPostBack) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(@"C:\c

如何在xml文件的内部文本中编写内容

我能够从文件中读取特殊标记,如下所示:

 protected void Page_Load(object sender, EventArgs e)
    {// this is to read from xml.
        if (!Page.IsPostBack)
        {
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(@"C:\configfolder\config.xml");

            XmlNodeList portNo = xmlDoc.GetElementsByTagName("AgentConfigRepository");
            foreach (XmlNode node in portNo)
            {
                XmlElement bookElement = (XmlElement)node;
                string no = bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText;
                TextBox1.Text = no;
            }
        }
    }
bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText = "new text"
现在我想更改OVERRIDE\u CONFIG\u FILE\u NAME的内部文本中的值

以下是我的xml文件的外观:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<AgentConfigRepository>
  <SERVER_SHARE_SW_DIR_NAME val="singleVal">AgentSW</SERVER_SHARE_SW_DIR_NAME>
  <OVERRIDE_CONFIG_FILE_NAME val="singleVal">override_config.xml</OVERRIDE_CONFIG_FILE_NAME>
  <MAINTAIN_AGENT_SW_LEVEL val="singleVal">1.0</MAINTAIN_AGENT_SW_LEVEL>
  <MAINTAIN_AGENT_SW_PATCH_LEVEL val="singleVal">0</MAINTAIN_AGENT_SW_PATCH_LEVEL>
</AgentConfigRepository>

代理软件
覆盖_config.xml
1
0
因此,我想将override_config.xml更改为文本框中的其他值


有什么建议吗。。谢谢

如果您可以使用XDocument,它将变得非常简单:

XDocument xdoc = XDocument.Load(@"C:\configfolder\config.xml");
xdoc.Root.Element("OVERRIDE_CONFIG_FILE_NAME").SetValue("HelloThere");
xdoc.Save(@"C:\so2.xml");

如果可以使用XDocument,它将变得非常简单:

XDocument xdoc = XDocument.Load(@"C:\configfolder\config.xml");
xdoc.Root.Element("OVERRIDE_CONFIG_FILE_NAME").SetValue("HelloThere");
xdoc.Save(@"C:\so2.xml");

不幸的是,目前还没有对其进行测试(我不在测试它的位置),但从问题的外观来看,您正试图更改您在这一行中找到的元素的内部文本:

bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText;
指向文本框中的任何内容。通常,您需要这样一种陈述:

 protected void Page_Load(object sender, EventArgs e)
    {// this is to read from xml.
        if (!Page.IsPostBack)
        {
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(@"C:\configfolder\config.xml");

            XmlNodeList portNo = xmlDoc.GetElementsByTagName("AgentConfigRepository");
            foreach (XmlNode node in portNo)
            {
                XmlElement bookElement = (XmlElement)node;
                string no = bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText;
                TextBox1.Text = no;
            }
        }
    }
bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText = "new text"

新文本可以是应用程序中文本框中的字符串或其他变量,也可以是硬编码的(如本例所示)。希望这能有所帮助。

不幸的是,这目前还没有经过测试(我不在测试它的位置),但从问题的外观来看,您正试图更改您在这一行中找到的元素的内部文本:

bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText;
指向文本框中的任何内容。通常,您需要这样一种陈述:

 protected void Page_Load(object sender, EventArgs e)
    {// this is to read from xml.
        if (!Page.IsPostBack)
        {
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(@"C:\configfolder\config.xml");

            XmlNodeList portNo = xmlDoc.GetElementsByTagName("AgentConfigRepository");
            foreach (XmlNode node in portNo)
            {
                XmlElement bookElement = (XmlElement)node;
                string no = bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText;
                TextBox1.Text = no;
            }
        }
    }
bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText = "new text"

新文本可以是应用程序中文本框中的字符串或其他变量,也可以是硬编码的(如本例所示)。希望这有帮助。

您可以像设置任何其他属性一样设置InnerText(正如Tim C所说)

但是,当您这样做时,它只在XmlDocument对象中设置它。要查看文件中的更改,必须将更改保存回文件:


bookElement.save(filename)

您可以像设置任何其他属性一样设置InnerText(正如Tim C所说)

但是,当您这样做时,它只在XmlDocument对象中设置它。要查看文件中的更改,必须将更改保存回文件:


bookElement.save(filename)

我以前尝试过这个方法,但它不能像这样单独工作。。。谢谢,虽然我以前试过这个,但它不是像这样单独工作的。。。谢谢