【发布时间】:2015-05-18 10:51:53
【问题描述】:
我有下一个问题:我创建了下载器,它下载 xml 文档,但是其中一个文档有问题,在文档中没有结束标记。例如:
<?xml version="1.0"?>
<rows xmlns:fo="http://www.w3.org/1999/XSL/Format">
<row StateID="AK">
我有下一个代码:
public void SaveFiles(SftpClient sftp, string DirectoryName, string PathToFile)
{
foreach (Renci.SshNet.Sftp.SftpFile ftpfile in sftp.ListDirectory("." + DirectoryName))
{
DateTime downloadTime = ftpfile.LastWriteTime;
string newFileName = ftpfile.Name;
bool checkFile = check(PathToFile, newFileName, downloadTime);
if (checkFile == true)
{
FileStream fs = new FileStream(PathToFile + "\\" + ftpfile.Name, FileMode.Create);
sftp.DownloadFile(ftpfile.FullName, fs);
fs.Close();
File.SetLastWriteTime(PathToFile + "\\" + ftpfile.Name, downloadTime);
}
else
{
continue;
}
}
}
【问题讨论】:
-
如果您展示了创建 XML 的代码,将会有所帮助。如果您使用内置的 XML 类(
XmlDocument或XDocument),则不应发生这种情况。我这样说是假设您还创建了 XML。如果某个第三方创建了 XML,请告诉他们他们需要创建有效的 XML。 -
为什么文档开头无效?你对源头有控制权吗?修复文件的生成比以后修补要好得多。
-
无论您从谁那里下载 XML,我都会大喊大叫。你不能轻易解决这个问题,因为它是无效的 XML 并且不明确应该如何修复(你怎么能可靠地告诉像
rows应该 这样的东西在哪里结束?) -
我用 FTPS 下载了一个文件,然后他的解析。当我解析时出现问题,因为没有结束标签
-
此文档不是我创建的,我无法控制它