Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Xstream-更改ArrayList元素名称_Java_Xml_Arraylist_Alias_Xstream - Fatal编程技术网

Java Xstream-更改ArrayList元素名称

Java Xstream-更改ArrayList元素名称,java,xml,arraylist,alias,xstream,Java,Xml,Arraylist,Alias,Xstream,我正在尝试创建XML报表,它可以作为xls表打开。 我有以下输出: <Report> <test> <string>4.419</string> <string>4.256</string> </test> </Report> 根据该代码: /** * declare arrays */ // ArrayList<String> test = new Arra

我正在尝试创建XML报表,它可以作为xls表打开。 我有以下输出:

<Report>
  <test>
    <string>4.419</string>
    <string>4.256</string>
  </test>
</Report>
根据该代码:

/**
* declare arrays
*/
//   ArrayList<String> test = new ArrayList<String>();
ArrayList<String> stats = new ArrayList<String>();
//   ArrayList<String> count = new ArrayList<String>();

/**
 *return array list with loading times
 */
public ArrayList launch() {

  for (int i = 0; i < 2; i++) {

    //        ui.off();
    //        ui.on();
    device.pressHome();
    ui.openProgramInMenu("ON");

    long TStart = System.currentTimeMillis();
    ui.detectContactList();
    long TStop = System.currentTimeMillis();
    float res = TStop - TStart;
    res /= 1000;
    ui.log("[loading time]: " + res);
    //        ui.off();

    test.add(i, "Loading time");
    stats.add(i, Float.toString(res));
    count.add(i, Integer.toString(i));
  }
  System.out.println(stats);
}
其中rep.class具有代码:

public class ReportSettings {

    public List<String> test = new ArrayList<String>();
    public List<String> count = new ArrayList<String>();
    public List<String> stats = new ArrayList<String>();

      /**
       * Test method
       */
    public static void main(String[] args) {
        ReportSettings rep = new ReportSettings();
        rep.saveXML("report/data.xml");
        //        System.out.println(rep.test);
        //        rep = rep.loadXML("report/data.xml");
        //        System.out.println(rep.home);

        System.out.println(rep.getXML());
    }

    public void createReport() {
        ReportSettings rep = new ReportSettings();
        rep.saveXML("report/data.xml");
    }

    public String getXML() {
        XStream xstream = new XStream();
        xstream.alias("Report", ReportSettings.class);
        xstream.autodetectAnnotations(true);
        return xstream.toXML(this);
    }

    public void saveXML(String filename) {
        if (!filename.contains(".xml")) {
          System.out.println("Error in saveReport syntax");
          return;
        }
        String xml = this.getXML();
        File f = new File(filename);
        try {

          FileOutputStream fo = new FileOutputStream(f);
          fo.write(xml.getBytes());
          fo.close();
        }
        catch (FileNotFoundException e) {
          e.printStackTrace();
        }
        catch (IOException e) {
          e.printStackTrace();
        }
    }

    public ReportSettings loadXML(String filename) {
        if (!filename.endsWith(".xml")) {
          System.out.println("Error in loadReport syntax!");
          throw new RuntimeException("Error in loadReport syntax!");
        }
        File f = new File(filename);
        XStream xstream = new XStream(new DomDriver());
        xstream.alias("Report", ReportSettings.class);
        xstream.autodetectAnnotations(true);
        ReportSettings ort = (ReportSettings)xstream.fromXML(f);
        return ort;
    }
}
最后,我想从3 ArrayList创建表,其中{stats,count,test}*I/N
如何在XML文件中使用Xstream.alias更改为?例如,我需要将它们更改为stringOne和stringTwo。

当序列化为XML时,可以使用Xstream中的ClassAliasMapper为集合中的项提供不同的标记

为每个集合添加如下块:stats、count、test:

ClassAliasingMapper statsMapper = new ClassAliasingMapper(xstream.getMapper());
mapper.addClassAlias("somethingAnother", String.class);
xstream.registerLocalConverter(
    InteractionSession.class,
    "stats",
    new CollectionConverter(mapper)
    );