如何在我的xml文件的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;
}
}
}
现在我要更改OVERRIDE_CONFIG_FILE_NAME的innertext中的值
这是我的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>
所以我想将override_config.xml更改为文本框中的其他值。
任何建议..谢谢
答案 0 :(得分:2)
如果你可以使用XDocument,它变得非常简单:
XDocument xdoc = XDocument.Load(@"C:\configfolder\config.xml");
xdoc.Root.Element("OVERRIDE_CONFIG_FILE_NAME").SetValue("HelloThere");
xdoc.Save(@"C:\so2.xml");
答案 1 :(得分:1)
不幸的是,目前尚未经过测试(我不在测试它的位置),但从您的问题看起来,您正试图更改您在此行中找到的Element的innerText:
bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText;
到文本框中的任何内容。通常你需要这样的声明:
bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText = "new text"
新文本可以是应用程序中的文本框或其他变量中的字符串,也可以是硬编码(如本例所示)。希望这会有所帮助。
答案 2 :(得分:1)
您可以像任何其他属性一样设置InnerText(正如Tim C所说)
但是,当您执行此操作时,它仅在XmlDocument对象中设置它。要查看文件中的更改,您必须将更改保存回文件:
bookElement.save(文件名)