You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First of all, thank you for the packages, they're very useful 🚀
I've been having issues with the position function and I'm not sure if it's an issue with the htmlquery package or the xpath package, here's an example:
const htmlSample = `<!DOCTYPE html><html lang="en-US">
<head>
<title>Hello,World!</title>
</head>
<body>
<div class="test">
<a href="/test1">Test 1</a>
</div>
<div class="test">
<a href="/test2">Test 1</a>
</div>
<div class="test">
<a href="/test3">Test 1</a>
</div>
</body>
</html>
`
func TestXPath(t *testing.T) {
list := Find(testDoc, "//div[@class=\"test\" and position()=1]//a/@href")
for _, n := range list {
fmt.Println(InnerText(n))
}
}
I would expect this to filter all the nodes that have the class testand have a position == 1, so only the first <a /> element. But instead, I get all the nodes. If I try position()=2 I get nothing back.
If I instead use this xpath, it gives me the correct element:
//div[@class=\"test\"][2]//a/@href
If I try this on the browser it works, so I'm not sure if it is expected that it works this way here 🤔.
What could be the problem?
Thank you again!
The text was updated successfully, but these errors were encountered:
Sorry, it was not about position() bug, I found if change expr to this list := htmlquery.Find(doc, "//div[position()=1 and @class=\"test\"]/a/@href") can works. I guess build.processNode() have some bug.
If you are interesting, you can start at func (l *logicalQuery) Evaluate(t iterator) interface{} {...} to debug.
Hi there,
First of all, thank you for the packages, they're very useful 🚀
I've been having issues with the
position
function and I'm not sure if it's an issue with the htmlquery package or the xpath package, here's an example:I would expect this to filter all the nodes that have the class
test
and have a position == 1, so only the first<a />
element. But instead, I get all the nodes. If I tryposition()=2
I get nothing back.If I instead use this xpath, it gives me the correct element:
If I try this on the browser it works, so I'm not sure if it is expected that it works this way here 🤔.
What could be the problem?
Thank you again!
The text was updated successfully, but these errors were encountered: