我有一个遍历 XML 文件的 while 循环,对于其中一个节点“url”,其中有时存在无效值。我在此周围放置了一个 try-catch 语句来捕获任何无效值。问题是,每当抓取到无效值时,while 循环就会被终止,并且程序会在该循环之外继续。如果发现无效值,我需要 while 循环继续读取 XML 文件的其余部分。
这是我的代码:
XmlTextReader reader = new XmlTextReader(fileName);
int tempInt;
while (reader.Read())
{
switch (reader.Name)
{
case "url":
try
{
reader.Read();
if (!reader.Value.Equals("\r\n"))
{
urlList.Add(reader.Value);
}
}
catch
{
invalidUrls.Add(urlList.Count);
}
break;
}
}
我选择不包含 switch 语句的其余部分,因为它不相关。这是我的 XML 示例:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<visited_links_list>
<item>
<url>http://www.grcc.edu/error.cfm</url>
<title>Grand Rapids Community College</title>
<hits>20</hits>
<modified_date>10/16/2012 12:22:37 PM</modified_date>
<expiration_date>11/11/2012 12:22:38 PM</expiration_date>
<user_name>testuser</user_name>
<subfolder></subfolder>
<low_folder>No</low_folder>
<file_position>834816</file_position>
</item>
</visited_links_list>
我在整个代码中遇到的异常类似于以下内容:
“'',十六进制值 0x05,是无效字符。第 3887 行,位置 13。”