0

私のJavaクラスには、次の属性があります。

private HashMap<String, Integer> keywordFrequencies;

そして、関連するクラスのオブジェクトをシリアライズ/デシリアライズする必要があります。

SimpleXML は、このタイプの Java オブジェクトを表すことができますか? そして、XML はどのように見えるでしょうか?

私のXMLは次のようなものです:

 <keywordFrequencies>
    <keyword key="Osborne">1</keyword>
    <keyword key="budget">3</keyword>
 </keywordFrequencies>

現時点で逆シリアル化するコードは、一般的な方法です。

public static void printHashMap(HashMap<String, Integer> hm) {
    Set s = hm.entrySet();
    Iterator i = s.iterator();

    int j = 0;

    // Print the index.
    while(i.hasNext()) {
        Map.Entry m = (Map.Entry) i.next();
        System.out.println("No=" + (j + 1) + ", Key=" + m.getKey() + ", Freq=" + m.getValue());
        j++;
    }
}

Java クラスの属性は次のとおりです。

@ElementMap(entry="keywordFrequencies", key="key", attribute=true, inline=true)
private HashMap<String, Integer> keywordFrequencies;

ハッシュマップを次のように出力するメソッドを呼び出しているところ:

HashMap_Utils.printHashMap(requestOMDM.getKeywordFrequencies());
4

1 に答える 1

1

追加する必要があります

@ElementMap(entry="keywordFrequencies", key="key", attribute=true, inline=true)
private Map<String, Integer> keywordFrequencies;

http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#map

/編集、現在接続が制限されていますが、思い出すと...

xml との間でシリアル化するために使用される Bean があります。

@Root(name="root")
public class Example {

   @Element
   private String someProperty;

   @ElementMap(entry="keywordFrequencies", key="key", attribute=true, inline=true)
   private Map<String, Integer> keywordFrequencies;

   // getters and setters ommited
}

Serializer serializer = new Persister();
Example ex = new Example();
// set properties of ex here...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
serializer.write(ex, baos); // you can put here a FileOutputStream("fileToWrite.xml") too
String content = new String(baos.getBytes(), "UTF-8");
System.out.println(content);
// and then to deserialize
Example retrievedFromXml = serializer.read(Example.class, content);

これは役に立ちますか?

于 2013-07-02T15:43:13.513 に答える