iPhone上的libxml2

时间:2010-06-06 09:55:00

标签: iphone xpath html-parsing libxml2

我正在尝试使用libxml2解析HTML文件。通常这种方法很好,但在这种情况下不行:

<p>
    <b>Titles</b>
    (Some Text)
    <table>
        <tr>
            <td valign="top">
                …Something1...
            </td>
            <td align="right" valign="top">
                …Something2...
            </td>
        </tr>
    </table>
</p>

我执行此查询以获取第一个<td>

//p[b='Titles']/table/tr/td[0]

但没有返回任何内容,因为libxml认为<table>标记不是标记<p>的子标记并跟随他。

最后问题为什么?

2 个答案:

答案 0 :(得分:1)

//p[b='Titles']/table/tr/td[0]

错误在索引中。 XPath使用基于1的索引

更正后的XPath表达式为:

<强> //p[b='Titles']/table/tr/td[1]

答案 1 :(得分:1)

您使用的是HTML还是XML解析器? AFAIR,HTML只允许<p>内的内联元素(您不能将<table>放入<p>),以便在看到<p>代码后自动关闭<table>代码(在HTML中,您不必关闭每个标记)。因此,您的HTML大致相当于(属性省略):

<P>
  <B>Titles</B>
  Some text...

<TABLE>
  <TR>
    <TD>...Something1...
    <TD>...Something2...
</TABLE>

尝试使用libxml而不是HTML格式的XML解析器。