根元素的结束标记之后的复杂XML XQUERY无效内容[错误:FODC0002]

时间:2014-04-08 17:16:01

标签: xml xpath xquery xquery-sql xqilla

1.关于google.com的Alexa API响应:http://pastebin.com/C5yjSjCf 换句话说,它代表了12个简单表中的一行,称为" ContactInfo" "按国家排名",...

还有一个例子(facebook.com) http://pastebin.com/mP813jYS

2.方案/数据类型信息:http://awis.amazonaws.com/AWSAlexa/AWSAlexa.xsd

我可以用xqilla

做基本的xquery

query.txt:

声明命名空间aws =" http://alexa.com" ;;

/ AWS:UrlInfoResponse / AWS:响应/ AWS:UrlInfoResult / AWS:Alexa的/ AWS:contentData内容/ AWS:DataUrl

xqilla -i alexa.xml query.txt
Error parsing resource: file:///var/www/google  Error message: invalid content after root element's end tag [err:FODC0002]

xqilla -i google.xml query.txt
Error parsing resource: file:///var/www/Error message: invalid content after root element's end tag [err:FODC0002]

alexa.xml(我想要实际查询的文件),是彼此之后的许多api响应

我也尝试删除google.xml中的前3行和最后一行 并搜索和替换aws:'和领先的空间,jsut使它更简单 但仍然是相同的错误:(

1 个答案:

答案 0 :(得分:1)

你说......

  

alexa.xml(我想查询的文件实际上是),这些api很多   彼此之后的回应

这听起来像什么?你的文件看起来像这样吗?

<aws:UrlInfoResponse xmlns:aws="http://alexa.com">
    <!--...-->    
</aws:UrlInfoResponse>
<aws:UrlInfoResponse xmlns:aws="http://alexa.com">
    <!--...-->    
</aws:UrlInfoResponse>

这也可以解释你的错误。您只允许拥有一个根元素。你需要将它全部包装在另一个元素中。

示例:

<responses>
    <aws:UrlInfoResponse xmlns:aws="http://alexa.com">
        <!--...-->    
    </aws:UrlInfoResponse>
    <aws:UrlInfoResponse xmlns:aws="http://alexa.com">
        <!--...-->    
    </aws:UrlInfoResponse>    
</responses>

XPath:

/responses/aws:UrlInfoResponse/aws:Response/aws:UrlInfoResult/aws:Alexa/aws:ContentData/aws:DataUrl