1

我有以下 XML 文件:

<animals>
   <animal id="1" weight="56">Flipper</animal>
   <animal id="2" weight="230">Dumbo</animal>
   ...
</animals>

而且我只想保留权重(所以它返回“56 230 ...”)。我试过这个请求:

//animal[@weight]

但我仍然得到了整个 XML 内容......我也尝试过:

//animal/@weight

我得到了这个错误:

错误 SENR0001:属性“权重”没有父元素

秘诀是什么?

4

1 回答 1

3

看起来您的 XQuery 引擎希望返回一个或多个 XML 文档。因为属性节点不能出现在 XML 文档的根部,所以它很不高兴。

您可以尝试 (1) 编写查询以不返回属性节点,而只返回它们的值:

for $w in //animal/@weight
return string($w)

如果您的引擎真的只想返回 XML 文档,那么 (1) 也不会让它开心。因此,您可以尝试 (2) 返回一系列 XML 元素:

for $w in //animal/@weight
return <weight>{$w}</weight>

如果这不让满意,您可以 (3) 将所需的字符串包装在 XML 包装器中:

<weights>
{ for $w in //animal/@weight return string($w) }
</weights>

如果您希望每个都在单独的行上,(4)

<weights> { 
  "&#xA;", 
  for $w in //animal/@weight 
  return (string($w), "&#xA;")
} </weights>
于 2012-12-17T15:07:36.133 回答