Simple XML

  • xml_sample.xml

<?xml version="1.0" encoding="UTF-8"?>

<PropertyList>

<ItemList>

<Entry>

<Key>1</Key>

<Value>aaaaaaaaaa</Value>

</Entry>

<Entry>

<Key>2</Key>

<Value>first value</Value>

</Entry>

<Entry>

<Key>1</Key>

<Value>first value</Value>

</Entry>

</ItemList>

<ClassList>

<Entry>

<Key>4</Key>

<Value>first value</Value>

</Entry>

<Entry>

<Key>3</Key>

<Value>first value</Value>

</Entry>

<Entry>

<Key>5</Key>

<Value>aaaaaaa</Value>

</Entry>

</ClassList>

</PropertyList>

  • JAVA

package com.company;

import org.simpleframework.xml.Element;

import org.simpleframework.xml.ElementList;

import org.simpleframework.xml.Root;

import org.simpleframework.xml.Serializer;

import org.simpleframework.xml.core.Persister;

import java.io.File;

import java.util.Comparator;

import java.util.List;

@Root(name = "PropertyList", strict = false)

public class XMLModel {

@ElementList(name = "ItemList")

private List<Item> mItemList;

@ElementList(name = "ClassList")

private List<Item> mClassList;

private static class Item {

@Element(name = "Key")

private Integer key;

@Element(name = "Value")

private String value;

}

public static XMLModel getInstance() throws Exception {

Serializer serializer = new Persister();

File source = new File("xml_sample.xml");

XMLModel xmlModel = serializer.read(XMLModel.class, source);

xmlModel.mItemList.sort(new Comp().reversed());

xmlModel.mClassList.sort(new Comp().reversed());

return xmlModel;

}

private static class Comp implements Comparator<Item> {

@Override

public int compare(Item lhs, Item rhs) {

int lhsKeyValue = lhs.key;

int rhsKeyValue = rhs.key;

if (lhsKeyValue == rhsKeyValue) {

return -1;

} else if (lhsKeyValue < rhsKeyValue) {

return -1;

}

return 0;

}

}

}