Go etree XML 包如何定义“兄弟姐妹”和“孩子”?

问题描述 投票:0回答:1

我有一个像这样的 XML 结构。

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

我正在使用

beevik/etree
来处理这个。

在下面的示例代码中,此 XML 结构的列表称为

elems
。我调用此代码来遍历 XML 文档中的
elems

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

此代码有效 -

doSomething(elemB)
执行了它应该执行的操作,但根据
FindElement
上的 etree 注释,它应该会失败。
elemB
应该是
nil
:

FindElement 返回与 XPath-like 匹配的第一个元素 “路径”字符串。 如果没有找到子元素,函数返回nil 使用路径。

根据该评论,

elemB:=elemA.FindElement(//SQLFile)
应该返回
nil
,因为
<SQLFile>
<Name>
兄弟姐妹
,而不是孩子。
<Name>
没有孩子。

为什么这段代码中

elemA.FindElement(//SQLFile)
没有返回
nil

xml go etreepackage
1个回答
0
投票

etree 评论中似乎有一个拼写错误:

如果使用以下方法找不到子元素,则该函数返回 nil

//
路径。 是不正确的。
//
返回兄弟节点,而不是子节点,如 XPath 所示。

.//
返回一个孩子。

© www.soinside.com 2019 - 2024. All rights reserved.