使用google-http-client-xml解析xml:使用XmlObjectParser解析xml元素内容以及属性

时间:2017-03-22 09:22:55

标签: java xml xml-parsing google-api-java-client google-http-client

我似乎无法解析以下xml中的值。如果我使用google-http-java客户端,解析xml类型的解析器类是什么?

下面的xml和解析器示例
<feed>
  <text start="1" end="10"> Text 1 </text> 
  <text start="2" end="20"> Text 2 </text> 
  <text start="3" end="30"> Text 3 </text> 
  <text start="4" end="40"> Text 4 </text> 
  <text start="5" end="50"> Text 5 </text> 
</feed>

Class Feed {
 @Key("text")
 public List<Text> textList;
}

Class Text {
  @Key("@start")
  public String startTime;


  @Key("@end")
  public String endTime; 
}

要明确我想要start属性值,end属性值和文本内容。似乎有用的是以下

HttpRequestFactory httpRequestFactory =
        HTTP_TRANSPORT.createRequestFactory(
            new HttpRequestInitializer() {
              @Override
              public void initialize(HttpRequest request) throws IOException {
                request.setParser(new XmlObjectParser(new XmlNamespaceDictionary().set("", "")));
              }
            });    
Feed feedObject = httpResponse.parseAs(Feed.class);

但我无法获得内容价值。

如果我将Feed类更改为以下

Class Feed {
     @Key("text")
     public List<String> textList;
}

我只能获取内容而不是属性值!

很难找到任何示例源代码(在github,stackoverflow等上)

1 个答案:

答案 0 :(得分:0)

好的,这是通过github梳理后的答案!!!

<feed>
  <text start="1" end="10"> Text 1 </text> 
  <text start="2" end="20"> Text 2 </text> 
  <text start="3" end="30"> Text 3 </text> 
  <text start="4" end="40"> Text 4 </text> 
  <text start="5" end="50"> Text 5 </text> 
</feed>

Class Feed {
 @Key("text")
 public List<Text> textList;
}

Class Text {
  @Key("@start")
  public String startTime;

  @Key("@end")
  public String endTime; 

  @Key("text()")
  public String payload; 
}