2016-05-19 7 views
0

Мне нужно использовать парсер сакса для получения имени нескольких кнопок в android и сохранить его в файле, а в некоторых случаях, если я сделаю какие-либо изменения, которые должны быть установлены (загружены) на текст кнопки. Предтем:используя sax в качестве приемника и сеттера

Button1 текст: жизнь хороша; Button2 текст: жизнь не хороша

«Button1, жизнь хорошая, Button2, жизнь не очень хорошая» должна быть сохранена в log.txt. если я какие-либо изменения в этом файле log.txt, как (возможно сделать обновление): «Button1, жизнь довольно хорошо, Button2, жизнь не Wellcome», чем

Button1 текст: жизнь довольно хорошо; Button2 текст: life not wellcome

так, как я могу заставить его работать, спасибо.

+0

Для такого маленького xml, почему вы используете sax? Как насчет dom, jdom, dom4j или vtd-xml? –

+0

Это просто образец оригинала, который больше. – boy

+0

Насколько велик ваш файл? –

ответ

0

Существует более простой способ сделать это: вы можете использовать строковые ресурсы. String Resources | Android Developers

<resources> 
    <string name="life_is_x">Life is %s</string> 
    <string name="good">good</string> 
    <string name="not_good">not good</string> 
    <string name="quite_good">quite good</string> 
</resources> 

в макете XML, вам не нужно ставить значение атрибута android:text на кнопке (хотя, если вы укажете tools:text значение будет отображаться в Android студии графического только и не дизайнера макет вашего приложение, которое полезно для проектирования)

Затем в коде:.

Context context = button.getContext(); 
    String lifeStr; 
    switch (lifeEnum) { 
    case GOOD: 
     lifeStr = context.getString(R.string.good); 
     break; 
    case NOT_GOOD: 
     lifeStr = context.getString(R.string.not_good); 
     break; 
    case QUITE_GOOD: 
     lifeStr = context.getString(R.string.quite_good); 
     break; 
    } 
    String title = context.getString(R.string.life_is_x, lifeStr); 
    // lifeStr will replace the %s placeholder in life_is_x 
    button.setText(title); 
+0

Спасибо за ваш ответ, но я уже использую файл ресурсов. Проблема в том, что мне нужно сделать программу для запоминания последнего текста и, возможно, внести изменения в текст, любую идею для этого? – boy

+0

Вы имеете в виду приложение Android на устройстве или в автономной программе Java во время разработки? –

+0

Я имею в виду устройство Android. Итак, я думаю, что sax xml setter в файл может помочь мне сохранить последний текст с идентификатором кнопки, и в любом случае, как перезагрузка программы, можно загрузить текст кнопки, если он существует. Какой-нибудь ключ к этому? – boy

0

я решил мою проблему с JDOM анализатором, на самом деле я использовал этот сайт: http://www.tutorialspoint.com/java_xml/java_jdom_parse_document.htm Также эта ссылка для создания xml-файла: http://www.tutorialspoint.com/java_xml/java_dom_create_document.htm. Спасибо, что подарили мне идеи. Я рекомендую всем, кто хочет играть с xml-операцией на локальном устройстве Android, должен взглянуть на http://www.tutorialspoint.com/java_xml/. вы можете найти любой пример xml.

<?xml version="1.0"?> 
<class> 
    <student rollno="393"> 
     <firstname>dinkar</firstname> 
     <lastname>kad</lastname> 
     <nickname>dinkar</nickname> 
     <marks>85</marks> 
    </student> 
    <student rollno="493"> 
     <firstname>Vaneet</firstname> 
     <lastname>Gupta</lastname> 
     <nickname>vinni</nickname> 
     <marks>95</marks> 
    </student> 
    <student rollno="593"> 
     <firstname>jasvir</firstname> 
     <lastname>singn</lastname> 
     <nickname>jazz</nickname> 
     <marks>90</marks> 
    </student> 
</class> 


import java.io.File; 
import java.io.IOException; 
import java.util.List; 

import org.jdom2.Attribute; 
import org.jdom2.Document; 
import org.jdom2.Element; 
import org.jdom2.JDOMException; 
import org.jdom2.input.SAXBuilder; 

public class JDomParserDemo { 
    public static void main(String[] args) { 
     try { 
     File inputFile = new File("input.txt"); 

     SAXBuilder saxBuilder = new SAXBuilder(); 

     Document document = saxBuilder.build(inputFile); 

     System.out.println("Root element :" 
      + document.getRootElement().getName()); 

     Element classElement = document.getRootElement(); 

     List<Element> studentList = classElement.getChildren(); 
     System.out.println("----------------------------"); 

     for (int temp = 0; temp < studentList.size(); temp++) {  
      Element student = studentList.get(temp); 
      System.out.println("\nCurrent Element :" 
       + student.getName()); 
      Attribute attribute = student.getAttribute("rollno"); 
      System.out.println("Student roll no : " 
       + attribute.getValue()); 
      System.out.println("First Name : " + student.getChild("firstname").getText()); 
      System.out.println("Last Name : "+ student.getChild("lastname").getText()); 
      System.out.println("Nick Name : "+ student.getChild("nickname").getText()); 
      System.out.println("Marks : "+ student.getChild("marks").getText());       
     } 
     }catch(JDOMException e){ 
     e.printStackTrace(); 
     }catch(IOException ioe){ 
     ioe.printStackTrace(); 
     } 
    } 
}