2014-01-30 5 views
1

Я разбираю XML, полученный из webservice, с помощью SAX.Анализ синтаксических символов xml

Одно из полей является ссылкой, как показано на следующем

<link_site> 
    http://www.ownhosting.com/webservice_332.asp?id_user=21395&amp;id_parent=33943 
</link_site> 

Я должен получить эту ссылку и сохранить его, но он сохраняется примерно так: id_parent=33943.

Parser фрагмент кода:

//inside method startElement 
else if(localName.equals("link_site")){ 
    this.in_link=true; 
} 
... 
//inside method endElement 
else if(localName.equals("link_site"){ 
    this.in_link=false; 
} 

Затем я получаю содержание

else if(this.in_link){ 
    xmlparsing.setOrderLink(count, Html.fromHtml(new String(ch, start, length)).toString()); 
}//I get it and put in a HashMap<Integer,String> 

Я знаю, что этот вопрос в связи с особой кодировкой.

Что я могу сделать?

+0

есть вы пытаетесь с ** URLDecoder.decode (stingvalue, "UTF-8"); ** –

ответ

1

& делает синтаксический анализатор разделяющим линию и выполняет несколько вызовов метода characters(). Вам нужно сконцентрироваться на кусках. Что-то вроде этого

SAXParserFactory.newInstance().newSAXParser() 
      .parse(new File("1.xml"), new DefaultHandler() { 
       String url; 
       String element; 

       @Override 
       public void startElement(String uri, String localName, String qName, 
         Attributes attributes) throws SAXException { 
        element = qName; 
        url = ""; 
       } 

       @Override 
       public void characters(char[] ch, int start, int length) throws SAXException { 
        if (element.equals("link_site")) { 
         url += new String(ch, start, length); 
        } 
       } 

       @Override 
       public void endElement(String uri, String localName, String qName) 
         throws SAXException { 
        if (element.equals("link_site")) { 
         System.out.println(url.trim()); 
         element = ""; 
        } 
       } 
      }); 

печатает

http://www.ownhosting.com/webservice_332.asp?id_user=21395&id_parent=33943 
+0

Хорошо, я попробовал ваш код и он прекрасно работает (для этого +1). Но теперь напечатан URL: http: //www.ownhosting.com/webservice_332.asp? Id_user = id_parent = 33943' ... Возможно ли, что кодировка пытается кодировать не только '&', но' 21395 & ' ? – MikeKeepsOnShine

+0

Я опубликовал полный код, попробовал –

Смежные вопросы