想要使用c#将特定节点保存到Xml文件中

时间:2013-01-11 08:25:31

标签: c# xml

  1. 以下代码:

    protected void generate_Click(object sender, EventArgs e)
    {
        XmlDocument doc = new XmlDocument();
        doc.PreserveWhitespace = true;
        doc.Load("XmlFileName");
        XmlNode node = doc.SelectSingleNode("ChartData/XaxisFields/XaxisField");
        if (node != null)
        {
            node.ChildNodes.Item(0).InnerXml = "hi";
            doc.Save("XmlFileName");
        }
    
     }   
    
  2. 此处显示null引用,

    node.ChildNodes.Item(0).InnerXml = "hi";
    
  3. 代码是否正确,运行后的代码没有显示任何错误 但是没有添加Xaxisfield。

    <?xml version="1.0" encoding="utf-8" ?>
    <ChartData>
      <XaxisFields>
        <XaxisField></XaxisField>
      </XaxisFields>
    </ChartData>
    
  4. 列出项目

  5. 我想通过选择特定的父节点在xml文件中添加childnode Xaxisfield

1 个答案:

答案 0 :(得分:2)

您可以使用Linq to Xml选择节点并更新其值:

var xdoc = XDocument.Load("XmlFileName");
xdoc.Root.Element("XaxisFields").Element("XaxisField").Value = "hi";
// OR
// xdoc.XPathSelectElement("//XaxisField").Value = "hi";
xdoc.Save("XmlFileName");

此外,您的代码无效,因为XaxisField节点没有子节点。这将有效:

XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load("XmlFileName");
XmlNode node = doc.SelectSingleNode("ChartData/XaxisFields/XaxisField");
if (node != null)
{
    node.InnerXml = "hi";
    doc.Save("XmlFileName");
}