首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用scala解析xml

用scala解析xml
EN

Stack Overflow用户
提问于 2015-11-07 14:50:13
回答 1查看 315关注 0票数 0

我试图用scala.xml.XML解析AWIS(来自亚马逊的alexa)api的xml,但没有成功。

XML响应:

代码语言:javascript
复制
<?xml version="1.0"?>
<aws:TrafficHistoryResponse xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:Response xmlns:aws="http://awis.amazonaws.com/doc/2005-07-11"><aws:OperationRequest><aws:RequestId>aef82596-5d7b-c72a-b97c-f31de4aedcf5</aws:RequestId></aws:OperationRequest><aws:TrafficHistoryResult><aws:Alexa>

  <aws:TrafficHistory>
    <aws:Range>7</aws:Range>
    <aws:Site>yahoo.com</aws:Site>
    <aws:Start>2015-10-30</aws:Start>
    <aws:HistoricalData>
      <aws:Data>
        <aws:Date>2015-10-30</aws:Date>
        <aws:PageViews>
          <aws:PerMillion>10800</aws:PerMillion>
          <aws:PerUser>7.33</aws:PerUser>
        </aws:PageViews>
        <aws:Rank>5</aws:Rank>
        <aws:Reach>
          <aws:PerMillion>130500</aws:PerMillion>
        </aws:Reach>
      </aws:Data>
      <aws:Data>
        <aws:Date>2015-10-31</aws:Date>
        <aws:PageViews>
          <aws:PerMillion>10790</aws:PerMillion>
          <aws:PerUser>6.85</aws:PerUser>
        </aws:PageViews>
        <aws:Rank>5</aws:Rank>
        <aws:Reach>
          <aws:PerMillion>129100</aws:PerMillion>
        </aws:Reach>
      </aws:Data>
      <aws:Data>
        <aws:Date>2015-11-01</aws:Date>
        <aws:PageViews>
          <aws:PerMillion>10960</aws:PerMillion>
          <aws:PerUser>6.84</aws:PerUser>
        </aws:PageViews>
        <aws:Rank>5</aws:Rank>
        <aws:Reach>
          <aws:PerMillion>132500</aws:PerMillion>
        </aws:Reach>
      </aws:Data>
      <aws:Data>
        <aws:Date>2015-11-02</aws:Date>
        <aws:PageViews>
          <aws:PerMillion>11180</aws:PerMillion>
          <aws:PerUser>7.57</aws:PerUser>
        </aws:PageViews>
        <aws:Rank>5</aws:Rank>
        <aws:Reach>
          <aws:PerMillion>134800</aws:PerMillion>
        </aws:Reach>
      </aws:Data>
      <aws:Data>
        <aws:Date>2015-11-03</aws:Date>
        <aws:PageViews>
          <aws:PerMillion>11290</aws:PerMillion>
          <aws:PerUser>7.70</aws:PerUser>
        </aws:PageViews>
        <aws:Rank>5</aws:Rank>
        <aws:Reach>
          <aws:PerMillion>133900</aws:PerMillion>
        </aws:Reach>
      </aws:Data>
      <aws:Data>
        <aws:Date>2015-11-04</aws:Date>
        <aws:PageViews>
          <aws:PerMillion>11310</aws:PerMillion>
          <aws:PerUser>7.76</aws:PerUser>
        </aws:PageViews>
        <aws:Rank>5</aws:Rank>
        <aws:Reach>
          <aws:PerMillion>133400</aws:PerMillion>
        </aws:Reach>
      </aws:Data>
      <aws:Data>
        <aws:Date>2015-11-05</aws:Date>
        <aws:PageViews>
          <aws:PerMillion>11430</aws:PerMillion>
          <aws:PerUser>7.74</aws:PerUser>
        </aws:PageViews>
        <aws:Rank>5</aws:Rank>
        <aws:Reach>
          <aws:PerMillion>133300</aws:PerMillion>
        </aws:Reach>
      </aws:Data>
    </aws:HistoricalData>
  </aws:TrafficHistory>
</aws:Alexa></aws:TrafficHistoryResult><aws:ResponseStatus xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:StatusCode>Success</aws:StatusCode></aws:ResponseStatus></aws:Response></aws:TrafficHistoryResponse>

处理代码:

代码语言:javascript
复制
val xml = XML.loadString(response.body)
val response = xml \ "aws:Response"
val data = xml \\ "aws:Data"

响应和数据都返回空节点序列。我想这可能和名字的节奏有关。

如能就如何处理这一问题提出任何建议,将不胜感激。提亚

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-07 15:58:56

尝试请求没有指定名称空间的元素:

代码语言:javascript
复制
val response = xml \ "Response"
val data = xml \\ "Data"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33584063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档