2012-09-11 2 views
1

Blackberry Java 용 RssParser를 개발했으며 Rss xml 파일에서 제목을 성공적으로 파싱했지만 내 요구 사항은 Rss에서 imageurls를 구문 분석하는 것입니다.Rss Blackberry 용 Java 구문 분석 Java

하지만 내 코드는 개별 태그에 대해 정상적으로 작동하지만 실제 요구 사항은 drawlist입니다. Rss에서 이미지 URL과 제목 태그 값을 모두 검색하는 방법은 무엇입니까?

public void run() { 
      Document doc; 
      StreamConnection conn = null; 
      InputStream is = null; 
      try {   

       conn = (StreamConnection) Connector.open("Rss.xml"+";deviceside=true");    

       DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
       docBuilderFactory.setIgnoringElementContentWhitespace(true); 
       docBuilderFactory.setCoalescing(true); 
       DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();  
       docBuilder.isValidating();  
       is = conn.openInputStream();  
       doc = docBuilder.parse(is);  
       doc.getDocumentElement().normalize(); 


        NodeList list = doc.getElementsByTagName("image"); 

       NodeList list = doc.getElementsByTagName("title"); 
        for (int a = 0; a < list.getLength(); a++) {  
        Node textNode1 = list.item(a).getFirstChild(); 
        listElements.addElement(textNode.getNodeValue()); 
         } 





public void drawListRow(ListField list, Graphics g, int index, int y, int w) 
    { 
     String title = (String)listElements.elementAt(index); 


     g.drawText(title, 5, 15+y, 0, w); 
    } 

답변

3

귀하의 코드 snipet 당신이 두 개의 "NodeList를 목록"변수를 가지고 있기 때문에 컴파일되지 않습니다,하지만 당신은 다른 목록에 이미지 URL을 얻었다 있다고 가정 할 수 있습니다 :

여기 내 코드입니다. 각 URL에 대해 이미지 데이터를 가져와 나중에 이미지 개체를 시작하여 나중에 그리기 위해 저장해야합니다.

public void run() { 
    NodeList list = doc.getElementsByTagName("image"); 

    for (int a = 0; a < list.getLength(); a++) { 
     Node textNode1 = list.item(a).getFirstChild(); 

     imageElements.addElement(getImage(textNode.getNodeValue())); 
    } 
} 

// variation of the same method found at 
// http://stackoverflow.com/questions/4883600/how-do-i-get-to-load-image-in-j2me 
private Image getImage(String url) throws IOException { 
    HttpConnection connection = null; 
    DataInputStream inp = null; 
    int length; 
    byte[] data; 
    try { 
     connection = (HttpConnection) Connector.open(url); 
     connection.getResponseMessage(); 
     length = (int) connection.getLength(); 
     data = new byte[length]; 
     inp = new DataInputStream(connection.openInputStream()); 
     inp.readFully(data); 

     return Image.createImage(data, 0, data.length); 
    } finally { 
     if (connection != null) 
      connection.close(); 
     if (inp != null) 
      inp.close(); 

    } 
} 

public void drawListRow(Graphics g, int index, int y, int w) { 
    String title = (String) listElements.elementAt(index); 
    Image image = (Image) imageElements.elementAt(index); 

    g.drawText(title, 5, 15+y, 0, w); 
    // As I do not have experience with Blackberry I assume below method exists 
    g.drawImage(image, 5, y, 0, w); 
}