【问题标题】:How can I add closed tag in xml document?如何在 xml 文档中添加封闭标签?
【发布时间】: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 类(XmlDocumentXDocument),则不应发生这种情况。我这样说是假设您还创建了 XML。如果某个第三方创建了 XML,请告诉他们他们需要创建有效的 XML。
  • 为什么文档开头无效?你对源头有控制权吗?修复文件的生成比以后修补要好得多。
  • 无论您从谁那里下载 XML,我都会大喊大叫。你不能轻易解决这个问题,因为它是无效的 XML 并且不明确应该如何修复(你怎么能可靠地告诉像 rows 应该 这样的东西在哪里结束?)
  • 我用 FTPS 下载了一个文件,然后他的解析。当我解析时出现问题,因为没有结束标签
  • 此文档不是我创建的,我无法控制它

标签: c# .net xml


【解决方案1】:

包含未闭合标签的文档根本不是 XML。正如 cmets 中的其他人所建议的那样,理想情况下,解决此问题的工作由生成文档的一方完成。

关于原始问题,检测未封闭的标签通常不是一件容易的事。我建议尝试HtmlAgilityPack (HAP)。它内置了自动关闭未关闭标签的功能(在开始标签之后立即添加关闭标签)。

example using HAP :

using HtmlAgilityPack;

......

var xml = @"<?xml version=""1.0""?>
<rows xmlns:fo=""http://www.w3.org/1999/XSL/Format"">
<row StateID=""AK"">";
var doc = new HtmlDocument();
doc.LoadHtml(xml);
Console.WriteLine(doc.DocumentNode.OuterHtml);

输出:

<?xml version="1.0"?>
<rows xmlns:fo="http://www.w3.org/1999/XSL/Format">
<row stateid="AK"></row></rows>

【讨论】:

  • 感谢您的回答。它帮助了我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 2013-03-26
  • 2023-02-15
相关资源
最近更新 更多