为什么只有最后一个节点无法写入XmlDocument?

时间:2013-03-22 21:47:14

标签: c# xml

我只是有一个关于将设置写入我的xml文件中的节点的快速问题由于某种原因我的所有其他设置保存但是这个和我想要保存的值是(ListingRid = 1 +),(PictureCount = 1+)在我的代码textBoxQuery.Text中包含(ListingRid = 1 +),(PictureCount = 1 +)

示例XML

<setting name="SearchQuery" serializeAs="String">
<value></value>
</setting>

以下是我调用的代码,任何人都可以告诉我,如果值可能包含无效字符,这就是为什么设置没有保存?

XmlDocument doc = new XmlDocument();
doc.Load(path);
foreach (XmlNode node in doc.SelectNodes("//setting"))
{
    if (node.OuterXml.Contains("SearchQuery"))
{
    node.LastChild.InnerText = textBoxQuery.Text;
}
doc.Save(path); //I have this in there at the end.

3 个答案:

答案 0 :(得分:0)

textBoxQuery.Text没有在此上下文中无效的值

node.LastChild.InnerText = textBoxQuery.Text

因为InnerText在设置时会转义值。这是InnerXmlInnerText

之间的差异

答案 1 :(得分:0)

你忘记了吗?

doc.Save(path);

答案 2 :(得分:0)

我更改了代码以通过值调用实际节点属性而不是使用OuterXml.Contains这似乎解决了这个问题。

            if (node.Attributes["name"].Value == ("SearchQuery"))
             node.LastChild.Innertext = textBoxQuery.Text;