使用 textbox.text 更改现有 XML 子值
Posted
技术标签:
【中文标题】使用 textbox.text 更改现有 XML 子值【英文标题】:Change existing XML child value with textbox.text 【发布时间】:2021-01-23 10:50:17 【问题描述】:我一直在尝试将 TextBox.Text
值应用于我现有的 XML 文件节点,我尝试了很多方法,但似乎没有成功。
我的代码:
private void btnAddId_Click(object sender, RoutedEventArgs e)
if (tbAddId.Text == "")
MessageBox.Show("No value was given!");
else if (tbAddId.Text == "Add ID")
MessageBox.Show("No value was given!");
else
XmlDocument Xdoc = new XmlDocument();
string xmldoc = (@"// path to my xml file");
Xdoc.Load(xmldoc);
XmlElement elList = (XmlElement)Xdoc.SelectSingleNode("/filter/filter_item");
if (elList != null)
XmlNode node = Xdoc.SelectSingleNode("filter_item");
node.InnerText = tbAddId.Text;
elList.AppendChild(node);
Xdoc.Save(xmldoc);
我的 xml:
<?xml version="1.0"?>
<root>
<filter>
<!-- Copy filter-item and put the order-id in as the value to skip it-->
<filter_item>
</filter_item>
</filter>
</root>
有谁知道将TextBox.Text
添加到现有子节点的最佳方法?
【问题讨论】:
elList
不为空吗?
【参考方案1】:
elList
变量是 null
,因为您忘记了 XPath 中的 root
节点。如果只有一个filter_item
节点,我猜从您对SelectSingleNode
的使用来看,这应该可以工作:
XmlDocument Xdoc = new XmlDocument();
string xmldoc = (@"// path to my xml file");
Xdoc.Load(xmldoc);
var filterItemNode = Xdoc.SelectSingleNode("root/filter/filter_item");
if (filterItemNode != null)
filterItemNode.InnerText = tbAddId.Text;
Xdoc.Save(xmldoc);
这将产生以下 XML 文档:
<?xml version="1.0"?>
<root>
<filter>
<filter_item>Text from the TextBox</filter_item>
</filter>
</root>
【讨论】:
以上是关于使用 textbox.text 更改现有 XML 子值的主要内容,如果未能解决你的问题,请参考以下文章