3

5番目の子と混同しないようにtable、5番目のテーブルの奥深くにあるすべての要素を取得する必要があるhtmlドキュメントがあります。私の問題は、この5つの深層構造が任意の数の要素でラップされる可能性があるため、次のような絶対パスを使用できないことです。DOMtabletablediv

/ html / body / table / tbody / tr / td / table / tbody / tr / td / table / tbody / tr / td / table / tbody / tr / td / table

例えば:

<body>    
    <table>    
        <table>
            <table>
                <table>
                   <!--Grab this one -->
                   <table>
                   </table>
                </table>
            </table>
       </table>
    </table>
</body>

またはこれ:

 <body> 
    <div> <!--Could be wrapped more than just once though -->  
        <table>    
            <table>
                <table>
                    <table>
                       <!--Grab this one -->
                       <table>
                       </table>
                    </table>
                </table>
           </table>
        </table>
    </div>
</body>
4

4 に答える 4

4

使用

(//table[count(ancestor::table) = 4])[1]

tableこれにより、。という名前の4つの祖先を持つドキュメントの最初のファイルが選択されtableます。

于 2012-11-21T20:37:31.410 に答える
3

//各要素間の表現が必要だと思います。完全な表現を作成します。

//table//table//table//table//table

これにより、パスのどこかに4つのテーブルがあるテーブルが選択されます

于 2012-11-21T20:04:31.017 に答える
1
XElement doc = XElement.Parse(yourXml); 
var requiredTable = doc.Descendants("table").ElementAt(4);
于 2012-11-21T20:13:17.850 に答える
1

mshtmlの場合(質問はc#とhtmlタグが付いているため)、htmlのchildnode要素にアクセスする方法は次のよう になります。C#で最速の方法でHTMLDocumentのすべてのテキストノードを取得するにはどうすればよいですか?

多分これは役立ちます!

于 2013-11-15T17:35:33.220 に答える