2012-04-01 1 views
0

Я новичок, поэтому, пожалуйста, будьте терпеливы. У меня есть следующий код, восстанавливающий узлы и его штраф. Я попытался получить узел «статус», чтобы его первая буква была заглавной с небольшим успехом, она закрывается.заглавные буквы первой буквы элемента xml

Что я сделал, это преобразовать элемент в строку. Я понял, что могу использовать код капитализации для всех элементов e, но я бы предпочел использовать его для статуса. Почему это заставляет закрыть? Не мог бы кто-нибудь помочь мне в этом?

NodeList nodes = doc.getElementsByTagName("line"); 

    for (int i = 0; i < nodes.getLength(); i++) {       
     HashMap<String, String> map = new HashMap<String, String>();  

     Element e = (Element)nodes.item(i); 

     map.put("id", XMLFunctions.getValue(e, "id")); 
     map.put("name", XMLFunctions.getValue(e, "name")); 
     map.put("status", XMLFunctions.getValue(e, "status")); 
     map.put("message", XMLFunctions.getValue(e, "message")); 

     mylist.add(map); 

//element to string 
     Document document = e.getOwnerDocument(); 
     DOMImplementationLS domImplLS = (DOMImplementationLS) document 
      .getImplementation(); 
     LSSerializer serializer = domImplLS.createLSSerializer(); 
     String str = serializer.writeToString(e); 

//capitalization 
     if (str.length() <= 1) { 
      str = str.toLowerCase(); 
     } else { 
      str = str.substring(0, 1).toLowerCase() + str.substring(1); 
     } 
+0

если вставить ваш журнал ошибок/StackTrace будет лучше. –

+0

04-01 22: 32: 34.928: W/dalvikvm (5306): threadid = 1: выход с отключенным исключением (группа = 0x2aac8578) 04-01 22: 32: 34.928: E/AndroidRuntime (5306): FATAL EXCEPTION : main 04-01 22: 32: 34.928: E/AndroidRuntime (5306): java.lang.RuntimeException: не удалось запустить Activity ComponentInfo {augment.reality.app/augment.reality.app.Service}: java.lang. ClassCastException: org.apache.harmony.xml.dom.DOMImplementationImpl – Pete

+0

Thread [<1> главную] (Приостановлено (исключение RuntimeException)) \t \t ActivityThread.performLaunchActivity (ActivityThread $ ActivityClientRecord, Intent) линия: 1659 \t \t ActivityThread.handleLaunchActivity (ActivityThread $ ActivityClientRecord, Intent): 1675 \t \t ActivityThread.access $ 1500 (ActivityThread, ActivityThread $ ActivityClientRecord, Intent) строка: 121 \t \t ActivityThread $ H.handleMessage (Message) строка: 943 \t \t ActivityThread $ H .dispatchMessage линия (Handler) (Сообщение): 99 \t \t Looper.loop) линия (: 130 \t \t ActivityThread.main (String []) линия: 3701 – Pete

ответ

0

Я решил эту проблему, используя следующий код:

public static String getValue(Element item, String str) {  


     NodeList n = item.getElementsByTagName(str); 

       char[] chars = XMLFunctions.getElementValue(n.item(0)).toLowerCase().toCharArray(); 
       boolean found = false; 
       for (int i = 0; i < chars.length; i++) { 
       if (!found && Character.isLetter(chars[i])) { 
        chars[i] = Character.toUpperCase(chars[i]); 
        found = true; 
       } else if (Character.isWhitespace(chars[i]) || chars[i]=='.' || chars[i]=='\'') { // You can add other chars here 
        found = false; 
       } 
       } 

       return String.valueOf(chars); 
0

Попробуйте это,

str = str.substring(0, 1).toLowerCase().concat(str.substring(1));