[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: XmlElement.GetChildrenByFilter not selecting correct child
[Thread Prev] | [Thread Next]
- Subject: Re: XmlElement.GetChildrenByFilter not selecting correct child
- From: Lee <t.lee.davidson@xxxxxxxxx>
- Date: Sun, 11 May 2025 17:58:04 -0400
- To: user@xxxxxxxxxxxxxxxxxxxxxx
On 5/11/25 2:37 PM, Lee wrote:
I am trying to get the <tbody> element of a table. But .GetChildrenByFilter("table > tbody") selects the <thead> element instead. That same CSS selector tested with two different online testers works as expected, so I think it is correct. But, I could be wrong.Is this a bug? Demo project attached.
After looking at the relevant code at lines 21-28 of cssfilter.cpp [1]
[C-code]
pos = (char*)memrchr(filter, '>', lenFilter);
if(pos)
{
Element *parent = (Element*)(elmt->parent);
if(!parent) return false;
return HTMLElement_MatchFilter(parent, filter, (pos - filter)) &&
HTMLElement_MatchFilter(elmt, pos, lenFilter - (pos + 1 - filter));
}
[/C-code]
and deciphering how one could get an integer by subtracting one string (character array) from another (LOL, it's actually
pointer arithmetic), I can't find anything wrong with it. It should work as expected.
Mimicking that logic as nearly but simply as possible in Gambas code does indeed work as expected. I'm lost. [1] https://gitlab.com/gambas/gambas/-/blob/master/gb.xml/src/html/cssfilter.cpp -- Lee --- Gambas User List Netiquette [https://gambaswiki.org/wiki/doc/netiquette] ---- --- Gambas User List Archive [https://lists.gambas-basic.org/archive/user] ----
| XmlElement.GetChildrenByFilter not selecting correct child | Lee <t.lee.davidson@xxxxxxxxx> |