You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go etree XML包中兄弟/子节点定义及FindElement异常问题

beevik/etree中FindElement的行为疑问

背景信息

我有如下XML结构:

<Process>
     <Name> Process1 </Name>
     <SQLFile> aSQLFile.sql </SQLFile>
     <SQLText> select * from Items </SQLText>
     <Mode> 2 </Mode>
</Process>

我正在使用beevik/etree处理该XML,通过以下代码遍历XML文档中的元素列表elems:

for elemA := range elems.FindElements("//Name") {
    elemB:=elemA.FindElement("//SQLFile")
    doSomething(elemB)
}

这段代码能正常执行doSomething(elemB)的预期操作,但根据FindElement的etree注释,它应该返回nil:

FindElement返回与类XPath路径字符串匹配的第一个元素。如果通过该路径未找到子元素,函数返回nil。

按照注释逻辑,<SQLFile>是<Name>的兄弟节点而非子节点,<Name>本身没有子元素,所以elemA.FindElement("//SQLFile")应该返回nil,但实际并非如此。

问题

  1. beevik/etree包是如何定义“兄弟节点(siblings)”和“子节点(children)”的?
  2. 为什么elemA.FindElement("//SQLFile")没有返回nil?

内容的提问来源于stack exchange,提问作者Vector

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:43:20