当前位置:  开发笔记 > 编程语言 > 正文

用C#编写XML

如何解决《用C#编写XML》经验,为你挑选了1个好方法。

我的C#有点生疏,我以前从未用它编写XML.如果我尝试编写除元素之外的任何内容,我就无法将XML写入文件.这是我的测试代码:

var guiPath = txtGuiPath.Text;
MessageBox.Show("Dumping File: " + guiPath);

try
{
    var writer = new XmlTextWriter("client_settings.xml", null);
    writer.WriteStartDocument();
    writer.WriteComment("Config generated on 01/01/01");
    writer.WriteStartElement("Config");
    writer.WriteStartElement("GuiPath");
    writer.WriteString(guiPath);
    writer.WriteEndElement();
    writer.WriteEndElement();
    writer.WriteEndDocument();
    writer.Close();
} catch (Exception ex) {
    MessageBox.Show(ex.Message);
}
MessageBox.Show("Finished Dumping");

如果guiPath为空,我会得到以下XML:




    

但如果guiPath中有任何文本,那么没有任何内容写入文件.我甚至可以删除client_settings.xml文件并反复激活此代码,除非guiPath为空,否则永远不会生成XML文件.将类似"This is a test"的内容传递给WriteString()也可以.

更新

因为我试图写出一个系统路径,这似乎是个问题.如果我删除所有反斜杠,它将正确地写入结果字符串,但如果我将它传递给WriteString或WriteCData,则XML根本不会写入.

更新2

事实证明我遇到这么多问题的原因是因为XML文件是在guiPath设置的任何路径中生成的,而不是在应用程序运行的目录中生成的(所以对我来说看起来它没有生成在所有).因此,如果我将guiPath设置为'C:\ Program Files\externalApp\appName.exe',它将XML文件保存为'C:\ ProgramFiles\externalApp\client_settings.xml',而不是在应用的启动文件夹中.为什么,我不知道.我开始传递Application.StartupPath并将文件名附加到它,现在它工作得很好.

感谢您的帮助!



1> mqp..:

您可能想要检查System.Xml.Linq中的API.这是一种更灵活的生成和编写XML的方法.编写文档可能大致如下:

XDocument document = new XDocument();
document.Add(new XComment("Config generated on 01/01/01"));
document.Add(new XElement("Config", new XElement("GuiPath", guiPath)));

// var xmlWriter = new XmlTextWriter("client_settings.xml", null);
// document.WriteTo(xmlWriter);

// thanks to Barry Kelly for pointing out XDocument.Save()
document.Save("client_settings.xml");

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有