1

我正在处理很多 .xml 文件。(百万 - 维基百科的 .xml 格式转储),它们比我想象的更难以阅读。

目前,我编写了一个 .css 文件以在浏览器中以可读的方式显示它们,并编写了一个脚本来将此 .css 的引用插入到所有文件中。

(我知道还有其他解决方案,比如 XSLT - 但我发现的所有信息使它看起来不适合文档级别 - 如果可能的话,我真的尽量不扩大这些文件的大小)

.css 适用于某些文件,但许多文件包含 之类的实体,我收到如下错误:

“XML Parsing Error: undefined entity” 带有一个漂亮的小插图,指向 或者它在引用中的亲属。

有一个articles.dtd 文件,它似乎应该连接浏览器的点(关键字-> Unicode)。它在每个文件中都被引用,例如:

 <!DOCTYPE article SYSTEM "../article.dtd">

并包含很多条目,例如:

<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
                              U+00A0 ISOnum -->

但要么我完全误解了这个文件的用途,要么它不能正常工作。

任何状况之下; 我怎样才能让这些文件显示出来;或者通过:

  • 显示实体(如“&nbSp”作为纯文本)
  • 完全删除实体(通过在实际文件中线性搜索/删除它们以外的任何方式)
  • 按照预期将实体解释为 unicode

当然,后者更可取;绝对理想的是,通过引用某种将身份映射到Unicode的外部文件(如果这不是articles.dtd文件的用途......)

编辑:我在这里没有使用功能强大的机器.. 提取 .rars 需要几天时间。对每个文件进行任何形式的编辑都需要很长时间。

4

2 回答 2

0

这不是很好的方法,只是解决方法:尝试替换&nbsp;&#160;

于 2012-07-05T11:57:28.207 回答
0

所以我已经解决了我的问题:如果它将来对任何人有帮助:

事实证明,我的问题的核心是外部 .dtd 文件已完全弃用。

.dtd 的功能实际上是像我想的那样声明我遇到问题的实体(等);但是因为浏览器不再支持外部 .dtd 文件(浏览器根本不获取/解析它们 - 强制它们依赖于客户端计算机上安装浏览器的文件的唯一方法)实体去未申报。

我采购了一个 .XML 集合,它太旧而无法达到标准;没有意识到。

最适合我的情况的解决方案是在请求时对每个文件进行延迟处理。用一个简单的标志来区分已处理和未处理。

于 2012-08-02T15:35:44.843 回答