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,但实际并非如此。
问题
beevik/etree包是如何定义“兄弟节点(siblings)”和“子节点(children)”的?- 为什么
elemA.FindElement("//SQLFile")没有返回nil?
内容的提问来源于stack exchange,提问作者Vector
相关产品推荐
相关产品推荐

