【发布时间】:2015-02-23 14:11:55
【问题描述】:
我收到此错误。后来我查了一下,发现我的XML中有非法字符的原因和解决方法。但我无权编辑任何这些文件。我的工作是读取和获取标签值、属性值和类似的东西。所以我不能用 替换像 '\x01' 这样的转义二进制字符。我还尝试在 XMLreader 设置中包含 CheckCharacters =false。它不需要这个。它仍然抛出同样的错误。
XMLreader 不能修复吗?我阅读了有关 XMLtextReader 的信息。它可以跳过异常。但是我已经使用 XMLreader 为我的所有功能编写了代码。如果我能找到解决方案,那就太好了。否则我将不得不更改我的所有代码。
我的代码:
private void button1_Click(object sender, EventArgs e)
{
int i = 0;
var filenames = System.IO.Directory
.EnumerateFiles(textBox1.Text, "*.xml", System.IO.SearchOption.AllDirectories)
.Select(System.IO.Path.GetFullPath);
foreach (var f in filenames)
{
var resolver = new XmlUrlOverrideResolver();
resolver.DtdFileMap[@"X1.DTD"] = @"\\location\X1.DTD";
resolver.DtdFileMap[@"R2.DTD"] = @"\\location\X2.DTD";
resolver.DtdFileMap[@"R5.DTD"] = @"\\location\R5.DTD";
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
settings.XmlResolver = resolver;
XmlReader doc = XmlReader.Create(f, settings);
while (doc.Read())
{
if ((doc.NodeType == XmlNodeType.Element) && (doc.Name == "ap"))
{
if (doc.HasAttributes)
{
String fin = doc.GetAttribute("ap");
if (fin == "no")
{
String[] array = new String[10000];
array[i] = (f);
File.AppendAllText(@"\\location\NAPP.txt", array[i] + Environment.NewLine);
i++;
}
else
{
String[] abs = new String[10000];
abs[i] = (f);
File.AppendAllText(@"\\location\APP.txt", abs[i] + Environment.NewLine);
i++;
}
}
}
}
}
MessageBox.Show("Done");
}
【问题讨论】:
标签: c# .net xml xml-parsing xmlreader