簡體   English   中英

Java,簡單的XML解析列表

[英]Java, Simple XML parsing list

我如何用 Java 解析這個列表? 我有從服務器返回的List<Image> ,但我無法獲得單個項目。

<images>
   <image>
       uploads/posts/2008-10/1225141003_1-21.jpg
   </image>
    <image>
       uploads/posts/2008-10/1225141003_1-22.jpg
   </image>
</images>

@Root(name = "圖片") 公共類圖片 {

 @ElementList(required=false, inline = true) private List<Image> imageList; public List<Image> getImageList() { return imageList; }

}

@Root(name = "圖像") 公共類圖像 {

//一些代碼......

}

我以這種方式解決了這個問題:

@Root(name = "images") 
public class Images {

     @ElementList(entry = "image", required=false, inline = true)
     private List<String> imageList;

     public List<String> getImageList() {
         return imageList;
     }
}

試試這個:

String inputStreamToString(InputStream is) {
    String line = "";
    String total = "";
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));

    try {
        while ((line = rd.readLine()) != null) {
            total +=line;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return total;
}

編輯

如果您能夠獲得該 xml:

String responseXML = inputStreamToString(yourXMLResponseFromServer.getEntity().getContent());

為了解釋 XML 文件,我一直使用 org.w3c.dom.Document 接口,它提供類似 Javascript 的文檔修改。 查看oracle網站上的文檔

聖誕節快樂

使用 DOM 和 Xpath

1 解析你的字符串

String xml="<my_xml/>";
DocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml)));

2 使用 xpath

XPath xPath = XPathFactory.newInstance().newXPath();
String expression="/images/image";
XPathExpression expr = xpath.compile(expression) ; 
NodeList nodes  = (NodeList) expr.evaluate(document,  XPathConstants.NODESET);

3 迭代

for (int k = 0; k < nodes.getLength(); k++)
    {
    Node nodeSegment = nodes.item(k);
    if (nodeSegment.getNodeType() == Node.ELEMENT_NODE)
        {
        Element eElement = (Element) nodeSegment;
        System.out.println("TEXT CONTENT="+eElement.getTextContent());

選擇:

如果您知道您有 1 或 2 張圖像:

expression="/images/image[1]"; // first one
String value = xPath.evaluate(expression, document);
System.out.println("EVALUATE:"+value);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM