使用sax作为getter和setter

时间:2016-05-19 18:16:35

标签: android xml parsing sax

我需要使用sax解析器在android上获取多个按钮名称并将其保存在文件中,在某些情况下,如果我做了任何应该设置(加载)到按钮文本的更改。 Forexample:

Button1文字是:生活是美好的; Button2文字是:生活不好

“Button1,生活是美好的; Button2,生活不好”应保存在log.txt中。 如果我在log.txt文件中做任何更改(可能更新):“Button1,生活相当好; Button2,生活不好”,比

Button1文字是:生活相当不错; Button2的文字是:生活不受欢迎

所以,我怎么能让它有效呢,谢谢。

2 个答案:

答案 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 Studio图形布局设计器中仅适用于您的应用,而不适用于设计。)

然后在你的代码中:

    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);

答案 1 :(得分: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。谢谢你给我的想法。我建议任何想在本地Android设备上玩xml操作的人都应该看看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();
      }
   }
}