【发布时间】:2014-11-25 09:41:58
【问题描述】:
这是 XML 输入:
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
我正在使用 BaseX 7.9。当我请求属性时,
for $book in collection()/bookstore/book
return $book/@*
发生错误:
[SENR0001] Attributes cannot be serialized: attribute category {"COOKING"}.
如何解决这个问题?谢谢你帮助我!
【问题讨论】:
-
好吧,老实说,我们不能告诉您比错误消息已经做的更多:属性不能被序列化。这就是您的查询正在执行的操作。如果要获取属性值,例如可以使用
@*/data()。如果您需要更多帮助,则必须指定要返回的结果 -
感谢 dirkk 我想准确地获取属性@category。它是 xsi:type 属性。我使用@*/string() 然后返回结果是“COOKING CHILDREN”,它是一个字符串。我不想要它
-
给孩子做饭听起来很好吃,你为什么不想要呢?
-
开个玩笑,你确实得到了属性类别的结果。它只是两个结果的串联(您遍历两本书并获取它们每一本书的属性)。那么,你想找回什么?预期的结果是什么?
-
我使用 Basex 6.7.1 然后通过 @* 获取属性很好。为什么 basex 7.9 不工作。