在C#中编写和读取XML

时间:2017-06-06 00:12:07

标签: c# xml

我用C#编写了一个设置文件作为XML

XmlWriter xmlWriter = XmlWriter.Create(files);
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("Settings");

xmlWriter.WriteStartElement("launch");
xmlWriter.WriteString("launch tab");
xmlWriter.WriteEndElement();

xmlWriter.WriteStartElement("some_setting");
xmlWriter.WriteString("empty");
xmlWriter.WriteEndElement();

等等,但如何阅读呢?
我一直都有错误。

XmlReader xmlReader = XmlReader.Create(files);

xmlReader.ReadStartElement("launch");
textBox1.Text = xmlReader.ReadString();

我希望简单地将其读回来但是会收到错误

  

System.Xml.XmlException:'元素'启动'没找到

第1行,第40位。

2 个答案:

答案 0 :(得分:0)

使用XmlWriter进行读写操作必须是对称的 - 您在阅读代码中缺少读取设置。

注意:使用序列化来读/写整个对象可能更容易 - Serialize an object to XML

答案 1 :(得分:0)

在解析XML文件的许多方法中(请参阅here以了解方法的正确分解),一般来说,我发现使用XmlDocument进行解析更为简单。对于您的代码,它将类似于以下示例:

void CreateXML(string fileName)
{
    XmlWriter xmlWriter = XmlWriter.Create(fileName);
    xmlWriter.WriteStartDocument();
    xmlWriter.WriteStartElement("Settings");

    xmlWriter.WriteStartElement("launch");
    xmlWriter.WriteString("launch tab");
    xmlWriter.WriteEndElement();

    xmlWriter.WriteStartElement("some_setting");
    xmlWriter.WriteString("empty");
    xmlWriter.WriteEndElement();

    xmlWriter.WriteEndElement();
    xmlWriter.WriteEndDocument();
    xmlWriter.Close();
}

void ReadXML(string fileName)
{
    XmlDocument doc = new XmlDocument();
    doc.Load(fileName);
    XmlNode root = doc.SelectSingleNode("Settings");
    string launchSetting = root.SelectSingleNode("launch").InnerText;
    textBox1.Text = launchSetting;
}

如果您想坚持使用XmlReader,我之前没有使用它,但正如Alexei在他的回答中所说,您似乎没有在“设置”节点开始阅读(见下文)。

XmlReader xmlReader = XmlReader.Create(files);

xmlReader.ReadStartElement("Settings");

xmlReader.ReadStartElement("launch");
textBox1.Text = xmlReader.ReadString();