我有一個簡單的任務,讓我拉我的頭髮,我敢肯定我非常接近。如何? xmlstarlet通過id提取HTML數據
這裏是我的XHTML文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test Page</title>
</head>
<body>
<p>
test
</p>
<table id="test_table">
<tr><td>test</td><td>test</td></tr>
<tr><th>mo test</th></tr>
</table>
</body>
</html>
...和xmlstarlet喜歡它:
$ xmlstarlet.exe el -v test.xhtml
html[@xmlns='http://www.w3.org/1999/xhtml']
html/head
html/head/title
html/body
html/body/p
html/body/table[@id='test_table']
html/body/table/tr
html/body/table/tr/td
html/body/table/tr/td
html/body/table/tr
html/body/table/tr/th
什麼,我需要做的是提取表標籤中的數據,最好是沒有HTML 。上下文是我正在寫一個測試集,其中網頁被調用,然後寫入文件。該測試要求我驗證表格數據,但如果頁面上的其他內容發生更改,則允許測試成功。另外,我不會預先知道表格將有多少列或行,它可以根據數據而有所不同。
但是當我嘗試:
$ xmlstarlet.exe sel -t -c "/html/body/table[@id='test_table']" test.xhtml
Attempt to load network entity http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
None of the XPaths matched; to match a node in the default namespace
use '_' as the prefix (see section 5.1 in the manual).
For instance, use /_:node instead of /node
有不同的id我需要不同的測試,但它們都具有唯一的ID值。所以,鑑於xhthml中的任何'id',我需要它的數據。
在此先感謝。
謝謝謝謝謝謝!現在我明白錯誤信息了!但是,我也永遠不會猜到後代的語法。 –