0

我在我的 Windows 应用程序中添加了 xml 文件,我想从文本框中添加值。我使用了以下代码,

string path = "codedata.xml";
        XmlDocument doc = new XmlDocument();
        if (!System.IO.File.Exists(path))
        {
            //Create neccessary nodes
            XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
            XmlComment comment = doc.CreateComment("This is an XML Generated File");
            doc.AppendChild(declaration);
            doc.AppendChild(comment);
        }
        else //If there is already a file
        {
            //    //Load the XML File
            doc.Load(path);
        }

        //Get the root element
        XmlElement root = doc.DocumentElement;

        XmlElement Subroot = doc.CreateElement("data");
        XmlElement Companycode = doc.CreateElement("Companycode");
        XmlElement Productcode = doc.CreateElement("Productcode");
        XmlElement Productname = doc.CreateElement("Productname");
        XmlElement Brandcode = doc.CreateElement("Brandcode");
        XmlElement Brandname = doc.CreateElement("Brandname");

        Companycode.InnerText = txt_companycode.Text;
        Productcode.InnerText = txt_productcode.Text;
        Productname.InnerText = txt_productname.Text;
        Brandcode.InnerText = txt_brandcode.Text;
        Brandname.InnerText = txt_brandname.Text;

        Subroot.AppendChild(Companycode);
        Subroot.AppendChild(Productcode);
        Subroot.AppendChild(Productname);
        Subroot.AppendChild(Brandcode);
        Subroot.AppendChild(Brandname);
        root.AppendChild(Subroot);
        doc.AppendChild(root);


        //Save the document
        doc.Save(path);


        //Show confirmation message
        MessageBox.Show("Details  added Successfully");

它在 root.AppendChild(Subroot) 附近显示错误;任何人都可以帮助我,我犯了错误。

4

3 回答 3

2

您可以使用 Linq to XML,这是一个示例:

var xDoc = XElement.Load("FilePath");
if (xDoc == null)
   return;

var myNewElement = new XElement("ElementName"
   new XAttribute("AttributeName", value1),
   new XAttribute("AttributeName", value2)
   //And so on ...
);
xDoc.Add(myNewElement);
xDoc.Save("FilePath");
于 2012-07-26T07:11:26.523 回答
1

root空。创建 XML 文件时尝试添加 Root 元素。

 if (!System.IO.File.Exists(path))
        {
            //Create neccessary nodes
            XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
            XmlComment comment = doc.CreateComment("This is an XML Generated File");
            doc.AppendChild(declaration);
            doc.AppendChild(comment);
            doc.AppendChild(doc.CreateElement("Root"));
        }

或者使用 LINQ-XML

string _file=@"c:\sample.xml";
XDocument doc;

if (!File.Exists(_file))
{
    doc = new XDocument();
    doc.Add(new XElement("Root"));
}
else
{
    doc = XDocument.Load(_file);
}

doc.Root.Add(
      new XElement("data",
                   new XElement("CompanyCode","C101"),
                   new XElement("ProductCode","P101")
            ) 
      );
doc.Save(_file);
于 2012-07-26T07:09:28.263 回答
0

在 null XMLDocumentElement中是null. 尝试添加Subroot到文档:

XmlElement root = doc.DocumentElement;

root.AppendChild(子根); doc.AppendChild(root);

// new code
doc.AppendChild(Subroot);
于 2012-07-26T07:08:34.667 回答