1

toString()クラスインスタンスのXML表現を返すように、同じようにメソッドを作成することを考えていました。

最初は次のように書くことを考えていました

public Element toElement() {
    // create Element instance and fill it
}

しかし、作成にはインスタンスがそれを呼び出す必要がElementあるため、内部に空のインスタンスを作成できませんでした。ElementDocumentcreateElement()

だから私はメソッドを書き直しました

public Element toElement(Document doc) {
   Element ans = doc.createElement("myclasstag");

   // filling ans

   return ans;
}

しかし、親階層にアタッチされるまでインスタンスHIERARCHY_REQUEST_ERRを埋めることができないため、ランタイム例外が発生しました。Element

だから私はメソッドを次のように書き直すことになりました

public Element toElement(Document doc, Element parent) {

   Element ans = doc.createElement("myclasstag");
   parent.appendChild(ans);

   // filling ans

   return ans;
}

でもこうすれば、本来あるべき場所にすでに取り付けられているので、ansを返す必要がないので、

public void append(Document doc, Element parent) {

   Element ans = doc.createElement("myclasstag");
   parent.appendChild(ans);

   // filling ans
}

今は絶対に嫌いtoString()です。

XMLインスタンスを下から上へと作成することは可能toString()ですか?

4

1 に答える 1

1

XStreamを使用して、これを行うことができます。

package com.adarshr;

import com.thoughtworks.xstream.XStream;


class Parent {
    private String name;
    private int age;

    public Parent(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class Test {
    private Parent parent = new Parent("Abcd", 30);

    public static void main(String[] args) throws Exception {
        System.out.println(new Test());
    }

    @Override
    public String toString() {
        return new XStream().toXML(this);
    }
}

どの印刷物:

<com.adarshr.Test>
  <parent>
    <name>Abcd</name>
    <age>30</age>
  </parent>
</com.adarshr.Test>

もちろん、それは完全にカスタマイズ可能です。

于 2012-06-08T14:59:57.847 に答える