Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加载带有非转义引号的xml文件_Java_Xml_Parsing_Tableofcontents - Fatal编程技术网

Java 加载带有非转义引号的xml文件

Java 加载带有非转义引号的xml文件,java,xml,parsing,tableofcontents,Java,Xml,Parsing,Tableofcontents,我有一个包含目录的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"/&

我有一个包含目录的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>

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

如果xml文件不可用,请不要将其称为xml


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

这根本不是有效的XML。如果我不得不去做的话,我会告诉发起者去纠正它。时期如果您真的想修复它,很遗憾,您不能使用XML解析器,但必须自己修复。我已经告诉发起者要更正它,但问题是,我的代码与产品的早期版本不兼容。所以我必须自己修理它。你知道有什么工具可以帮我逃避引用吗?我不知道有这样的工具。我想你得自己写。此外,我担心要求使用这样的工具(或库)对SO来说是不合主题的。您可能会考虑通过类似jsoup的解析器来运行它。我不知道它能否解决这个问题,但它确实解决了其他XML格式的问题。@Micheal Kay:我认为这条规则只与问题有关,取决于问题的表述方式。如果有人明确要求一个库或工具,那么他或她最好去。但在回答中推荐一个工具或图书馆是可以的,以防止重新发明轮子。坏了的自行车仍然是一辆自行车,对吗?破碎的xml呢?我知道它不符合xml,但它仍然是xml。你们从来没有机会使用来自无法修复的源的损坏的xml吗?您是编写解析器,还是首先寻找修复格式和使用xml框架的方法?@aphex我看到过太多的系统在经过几次这样的“变通”后变成了无法维护的混乱局面。有时,问题在“修复程序”内置后几年才出现,没有人能记住。你如何解决这个问题?假设我们有一个坏掉的xml生成器,它被交付给许多提供者。现在我需要写一个新特性,这取决于此。我可以修复损坏的发电机,但旧的供应商仍然保持不变,直到他们升级发电机。如果我只支持新的格式,其他各方将蒙受损失,因为破碎的格式不兼容。在这种情况下,您会怎么做?您通过严格遵守标准来解决问题。不容忍不符合项;尝试与本质上是垃圾的东西进行互操作总是会让您付出超出其价值的代价。如果您的东西是XML,那么任何随机字符串都是XML,而术语XML已经不再有任何意义。如果必须处理它,那么第一步就是承认它不是XML,并且XML工具对您没有任何用处。下一步是理解它实际上是什么:也就是说,对解析器将要编写来处理的语言规范进行反向工程。
In the content of elements, character data is any string of characters which does not contain the start-delimiter of any markup