如何在此示例中计算sql中两个节点之间的公共节点:
计数<li>标记在<h2 id="vgn">VGN A </h2>和<h2 id="vgn">VGN </h2>之间以及<h2>标记的数量。
换句话说:在本例中,h2、number1和h2数字2之间的li计数。
<table class="table table-condensed table-no-border table-brand-main">
<tr><td><h2 id="vgn">VGN A </h2></td></tr>
<tr><td>
<style>
ul.brand_572 {
-moz-column-count: 6;
-webkit-column-count: 6;
column-count: 6;
}
ul.brand_572 li
{
width:120px;
}
/*ul.brand_572 li a.product-title
{
width:120px;
}*/
</style>
<ul class="specialclass brand_572">
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
</ul>
</td>
</tr>
<tr><td><h2 id="vgn">VGN </h2></td></tr>
<tr><td>
<ul class="specialclass brand_572">
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
</ul>
</td></tr>
</table>预期产出:
count of li between h2 and h2
7 1 2c.li = no.h2 1,2之间的7
发布于 2016-09-17 21:09:09
现在您已经提出了三个问题,都是关于您想用T解决的HTML的一些问题。
tool不是解决问题的合适工具!
我已经告诉过您,您对XML有一个深刻的误解。你又做了一次:你用xml标记了你的问题。,但这不是XML (即使它看起来像)!这是HTML!
SQL Server对XML提供了很大的支持,但它不是HTML的合适工具。使用HTML解析器或任何过程语言自己编写解析算法。
请务必给您一个想法,为什么Server不是正确的工具:
在您的特殊情况下--,但是您永远不能依赖这个!-您的是有效的。在这种情况下--而且只有在这种情况下才是!--人们可以考虑XQuery。在<li>元素之后计数<h2>元素可能如下所示:
DECLARE @s VARCHAR(MAX)='Your HTML here';
DECLARE @xml XML=CAST(@s AS XML); --you'd get your first error here probably
DECLARE @H2_id VARCHAR(100)='vgn';
SELECT COUNT(*) AS CountOnThisLevel
FROM @xml.nodes('//h2[@id=sql:variable("@H2_id")]/../../../tr[2]/td/ul/li') AS A(li)结果是7,你喜欢的话.
这条路
//h2[@id=sql:variable("@H2_id")]/../../../tr[2]/td/ul/li如下所示:
使用等于变量“”内容的id-属性搜索文档中的任意h2。现在向上移动三个层次,然后取第二个
<tr>,然后向下移动到<td>、<ul>和<li>。数一数你在那里找到了多少。
看上去不错,但是
<h2>可能是<H2> (XQuery是区分大小写的!)<thead>和<tfoot><div>-tags你真的应该转过身去寻找合适的工具!
https://stackoverflow.com/questions/39546063
复制相似问题