【问题标题】:Parsing through text with incorrect attribute definition解析具有不正确属性定义的文本
【发布时间】:2013-06-03 23:48:45
【问题描述】:

在尝试将 html 文档解析为 XML(从开头添加 xml)时,我遇到了标签内属性的问题。

<tr>
<td class="yfnc_tabledata1" nowrap align="right">Jun 4, 2013</td>
<td class="yfnc_tabledata1" align="right">453.22</td>
<td class="yfnc_tabledata1" align="right">454.43</td>
<td class="yfnc_tabledata1" align="right">447.39</td>
<td class="yfnc_tabledata1" align="right">449.31</td>
<td class="yfnc_tabledata1" align="right">10,454,600</td>
<td class="yfnc_tabledata1" align="right">449.31</td>
</tr> 

虽然通常没关系(因为我的 xslt 代码实际上并没有引用它),但我收到了一个错误:

ERROR:  'Attribute name "nowrap" associated with an element type "td" must be followed by the ' = ' character.'
ERROR:  'com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: Attribute name "nowrap" associated with an element type "td" must be followed by the ' = ' character.'

所以我想知道是否有办法让它抑制/忽略这些错误。 (寻找一种不涉及单独解析的方法,该方法将首先删除所有 nowrap。)

(供参考,xml:http://pastebin.com/TLD4bZkq,xslt:http://pastebin.com/dPzDzeAX

【问题讨论】:

    标签: html xml xslt xml-parsing


    【解决方案1】:

    您尝试处理的数据不是 XML,因此 XML 解析器产生错误是正确的。

    根据您使用的 XSLT 处理器以及调用方式,您可能能够使用 HTML 解析器而不是 XML 解析器将 HTML 解析为 DOM 树,然后将其传递给 XSLT 处理器,而不是让处理器自己解析文件。

    但是请记住,XSLT 需要命名空间格式良好的 XML,如果解析器的输出不符合此规范,那么您将遇到问题。例如,在 Java(这是我最熟悉的)中,要让 XSLT 使用 DOM 文档,它必须是由命名空间感知解析器生成的 有问题的文档实际上并没有使用任何命名空间。

    【讨论】:

    • 谢谢,我想是时候先做一个字符串解析器了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    相关资源
    最近更新 更多