【问题标题】:complex XML XQUERY invalid content after root element's end tag [err:FODC0002]根元素结束标记后的复杂 XML XQUERY 无效内容 [err:FODC0002]
【发布时间】:2014-04-08 17:16:00
【问题描述】:

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

查询.txt:

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

/aws:UrlInfoResponse/aws:Response/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 使其更简单 但仍然是同样的错误:(

【问题讨论】:

    标签: xml xpath xquery xquery-sql xqilla


    【解决方案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
    

    【讨论】:

    • 耶,让它工作,但只有在将它放在根标签中并删除所有 aws: from 标签和开头的所有标签 xmlns:aws @daniel-haley
    • /root/Alexa/ContentData/DataUrl 现在遍历文件,但速度非常慢,每秒只列出 5 行!!!:D 有什么解决办法吗?所以我可能用正则表达式或 xerces 更快。只是觉得这更接近它的本意
    • 我将如何以最聪明的方式进行验证,包括来自 .xsd 的数据类型?没有任何工具可以自动将整个 xml 和 xsd 导入数据库表或 csv,这会容易得多...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多