2

HTMLファイルをlibxml2で解析しようとしています。通常はこれでうまくいきますが、この場合はそうではありません:

<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>に続くと考えているため、何も返されません。

そして最後に、なぜ?

4

2 に答える 2

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

エラーは索引付けにあります。XPath は 1 ベースのインデックスを使用します。

修正された XPath 式は次のとおりです。

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

于 2010-06-06T12:35:45.917 に答える
1

HTML または XML パーサーを使用していますか? AFAIR、HTMLは内部にインライン要素のみを許可するため<p>( を入れることはできません<table>) 、タグを見た後にタグを<p>自動的に閉じます(HTMLでは、すべてのタグを閉じる必要はありません)。したがって、HTML は次とほぼ同じです (属性は省略):<p><table>

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

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

HTML の代わりに libxml 形式の XML パーサーを使用してみてください。

于 2010-06-06T13:03:56.143 に答える