【问题标题】:Load xml file with not escaped quotes加载带有未转义引号的 xml 文件
【发布时间】:2014-07-21 11:51:13
【问题描述】:

我有一个带有目录的 xml 文件。问题是,它包含未转义的引号。如何加载文件并修复此报价?

<?xml version="1.0" encoding="UTF-8"?>
<?NLS TYPE="org.eclipse.help.toc"?>

<topic label="Main Topic" href="0.2.1.html#0.2.5">
    <topic label="Topic "Sales"" href="0.2.1.html#2.12.3.6"/>
</topic>

我知道在标准住宿中:

In the content of elements, character data is any string of characters which does not contain the start-delimiter of any markup

来源没有转义引号,我无法更改来源。如何在本地修复xml文件?

【问题讨论】:

  • 这根本不是有效的 XML。如果我不得不为此工作,我会告诉发起人更正它。时期。如果您真的想修复它,很遗憾您不能使用 XML 解析器,而必须自己完成。
  • 我已经告诉发起者改正它,但问题是,我的代码将与产品的先前版本不兼容。所以我必须自己修复它。你知道任何可以帮助我避开引号的工具吗?
  • 我不知道这样的工具。我认为你必须自己写。此外,我担心要求此类工具(或库)对于 SO 来说是题外话。
  • 您可能会考虑通过像 jsoup 这样的解析器来运行它。我不知道它会修复它,但它确实修复了其他 XML 格式问题。
  • @Micheal Kay:我认为这条规则只与问题有关,取决于问题的表述方式。如果有人明确要求库或工具,那么他或她最好去Software recommendations。但是可以在答案中推荐一个工具或库以防止重新发明轮子。

标签: java xml parsing tableofcontents


【解决方案1】:

如果不是,请不要将其称为 XML。

如果您想处理这个文件,您需要发现它符合哪些规则(语法),并为该语法编写一个解析器。这可能相当困难;我怀疑语法,当你发现它时,它会是模棱两可的,需要无限前瞻才能解决。

【讨论】:

  • 破自行车还是自行车,对吧?损坏的xml怎么办?我知道它不符合 xml,但它仍然是 xml。你们是否从来没有机会使用来自源的损坏的 xml,无法修复?您是编写解析器,还是先寻找修复格式并使用 xml 框架的方法?
  • @aphex 我已经看到太多的系统在经过一些这样的“变通办法”之后变成了无法维护的混乱。有时问题在“修复”内置后几年才浮出水面,没有人记得它。
  • 你如何解决这个问题?假设我们有一个损坏的 xml 生成器,它被交付给许多提供商。现在我需要编写一个新功能,这取决于它。我可以修复损坏的发电机,但旧的供应商保持不变,直到他们升级他们的发电机。如果我只支持新格式,其他方会受到影响,即损坏的格式不兼容。在这种情况下你会怎么做?
  • 您通过严格遵守标准来解决问题。不容忍不符合项;试图与本质上是垃圾的东西进行互操作总是会让你付出的代价超过它的价值。
  • 如果你的东西是 XML,那么任何随机的字符串都是 XML,并且 XML 一词不再具有任何意义。如果您必须处理它,那么第一步就是承认它不是 XML,并且 XML 工具对您毫无用处。下一步是了解它实际上是什么:也就是说,逆向设计您的解析器将要处理的语言规范。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多