我有一系列由C#中的XMLWriter写出的设置。这里有一些代码:如何获取正在由XMLWriter写入的当前项目
try
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
using (writer = XmlWriter.Create("PCOB2NET.XML", settings))
{
// Write XML data.
writer.WriteStartElement("PowerCOBOL2NETMigration");
writer.WriteStartElement("config");
writer.WriteElementString("VSVersion", selectedVSver);
writer.WriteElementString("path2SelectedVSVerProjects", path2SelectedVSVerProjects);
if (path2VSoverridden)
writer.WriteElementString("path2VSoverridden", "true");
else
writer.WriteElementString("path2VSoverridden", "false");
writer.WriteElementString("path2PRCfile", path2PRCfile);
writer.WriteElementString("path2XMLfile", path2XMLfile);
writer.WriteElementString("path2VSProject", path2VSProject);
...等等。 我的问题是,如果有一个异常(例如像一个空字段),它会进入catch块并按照我们的预期报告异常,但我不知道当时它正在写入哪个字段。
我的问题:
有什么办法,我可以得到当前字符串被写入,发生异常时?我搜索了网页没有成功,我翻阅了XMLWriter的所有属性和方法,但是我找不到一种方法来完成它。是否可能有某种类型的异常陷阱会将它提供给我?任何帮助或想法表示赞赏。
我是LINQ的粉丝,所以我很想看到你发布的代码。谢谢。但是,我不确定这是如何解决我的实际问题。我当然可以将设置作为块添加到XML文件中,但是如果出现错误(如空字段),它可能仍会给我不正确的XML,我仍然不知道哪个字段导致了问题。即使我设法写入文件没有问题,无论读取它将不得不处理它,所以我认为它只是移动问题。应该抛出异常是正确的。我的问题是知道WHICH字段导致它被抛出。 – Morepork
你永远不应该有一个空例外。这是一个编程错误,应该在应用程序发布之前解决。使用XmlWriter不是首选的方法。你必须适当平衡开放标签和结束标签。 Linq结束标签会自动处理。 – jdweng
是的,你是对的。它引发错误,因为字段中有一个x00字符,而不是因为该字段为空。我试过空字段,他们工作得很好。 – Morepork