2009-12-29 2 views
3

Проблема в том, что, хотя я успешно реализовал SAX-парсер в своем коде ... Он ведет себя странно. Это jus пропускает enteries после & и переходит к следующей записи. Просто хотел узнать, является ли это типичной работой SAX-анализатора или m, реализующего его неправильно?Android-синтаксический анализ Android «&»

Я реализовал org.xml.sax.ContentHandler и предоставил следующее кодирование внутри ...

`

public void characters(char[] ch, int start, int length) 
     { 
      if(lastName.equals("id")) 
      { 
       String id = String.copyValueOf(ch, start, length); 
       CustomList.idvector.add(id); 
      } 
      else if(lastName.equals("subcategory")) 
      { 
       String subcategory = String.copyValueOf(ch, start, length); 
       CustomList.subcategoryvector.add(subcategory); 
      } 
      else if(lastName.equals("photo")) 
      { 
       String photo = String.copyValueOf(ch, start, length); 
       CustomList.photovector.add(photo); 
      } 
      else if(lastName.equals("name")) 
      { 
       String name = String.copyValueOf(ch, start, length); 
       CustomList.namevector.add(name); 
      } 
     } 

`

Есть элементы с тегами ,,,. .. и м, берущий эту информацию в вектор ... это правильно ???

Теперь опять проблема в том, что я не могу разыграть специальный символ типа «$» и такой ... есть ли способ, которым мы можем поймать этих персонажей?

ответ

4

Не совсем уверен, что именно вы видите, если это не поможет решить вашу проблему, возможно, вы можете предоставить некоторые примеры ввода и вывода.

& является ссылкой на объект XML и означает &.

По умолчанию SAX выполнит преобразование для вас, поэтому, если ваш источник XML говорит hello&goodbye, вы должны увидеть hello&goodbye.

Возможно также, что SAX разбивает вызовы на метод characters() из-за ссылки на сущность. Возможно, вам придется объединить несколько вызовов в characters() вместе, все еще находясь внутри одного и того же тега.

+0

Thanx Brabster ... м собирается попробовать ур решение ... я буду обеспечивать ввод/вывод ... – JaVadid

+0

Но Еще одно сомнение ... я глупо спрашиваю об этом, но создает ли пространство какие-либо проблемы? – JaVadid

+0

Кстати, Brabster может предоставить некоторую кодировку для одного и того же ... Я имею в виду, что я понял, что проблема на самом деле связана с конкатенацией ... Может ли PLZ привести пример конкатенации строк в этом случае ... как проверьте, является ли следующий символ & amp ??? – JaVadid

1

Это работало 4 мне ребята ... Thanx Brabster ...

public void characters(char[] ch, int start, int length) 
      { 
       if(lastName.equals("id") && (lastName != lastElementTraversed)) 
       { 
        String s = new String(ch, start, length); 
        if (appendedid == null) 
        { 
         appendedid = new StringBuffer(s); 
        } else { 
          appendedid.append(s); 
        } 

       } 
      else if(lastName.equals("subcategory")&& (lastName !=lastElementTraversed)) 
       { 
        String s = new String(ch, start, length); 
        if (appendedsub == null) { 
         appendedsub = new StringBuffer(s); 
         } else { 
          appendedsub.append(s); 
         } 
        //lastElementTraversed = lastName; 
       } 
      else if(lastName.equals("photo")&& (lastName != lastElementTraversed)) 
       { 
        String s = new String(ch, start, length); 
         if (appendedphoto == null) { 
          appendedphoto = new StringBuffer(s); 
         } else { 
          appendedphoto.append(s); 
         } 
         //lastElementTraversed = lastName; 
       } 
      else if(lastName.equals("name") && (lastName != lastElementTraversed)) 
       { 
        String s = new String(ch, start, length); 
         if (appendedname == null) { 
          appendedname = new StringBuffer(s); 
         } else { 
          appendedname.append(s); 
         } 
         //lastElementTraversed = lastName; 
       } 
      } 
    public void startElement(String uri, String localName, String qName, Attributes atts) 
      { 
       lastName = localName; 
       appendedid=null; 
       appendedsub=null; 
       appendedphoto=null; 
       appendedname=null; 

      } 

      public void endElement(String uri, String localName, String qName) 
      { 
       lastElementTraversed = localName; 
       if(localName.equals("category")) 
        { 
         appendedid=null; 
         appendedsub=null; 
         appendedphoto=null; 
         appendedname=null; 

        } 

        if(appendedid!=null) 
        CustomList.idvector.add(appendedid.toString()); 
        if(appendedsub!=null) 
        CustomList.subcategoryvector.add(appendedsub.toString()); 
        if(appendedphoto!=null) 
        CustomList.photovector.add(appendedphoto.toString()); 
        if(appendedname!=null) 
        CustomList.namevector.add(appendedname.toString()); 

      } 
     } 
+0

Ну, на самом деле, я проверяю много вещей, потому что XML-файл у моего клиента действительно грязный ... забыть вещи, которые вы не понимаете ... я думаю, что вы поймете большую часть этого ... :) – JaVadid

+0

привет, ребята, проблема опять же, что я не могу уловить специальные символы, такие как «$» и bullets n all ... есть ли выход в синтаксическом анализе SAX или нам нужно перейти к другому методу синтаксического анализа ... делает ли JSON это? – JaVadid

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

  • Нет связанных вопросов^_^