私はpojoを持っています。これにはJAX-Bアノテーションが付いています。私はsetterとgetterを使ってオブジェクトを生成します。私はマーシャラーを使用してxmlを文書に書き出します。これは最終的に別のAPIによって出力ストリームに書き込まれます。リテラルxmlのJax-bシリアライズ
Object o = new Object('blah','blah','blah');
Document doc = db.newDocument();
marshaller.marshal(o, doc);
は、しかし、私は私のPOJOのフィールドのいずれかの属性として設定する必要があり、XMLの文字列を持っているが、私はそれがない文字列として、XMLとして整列化する必要があります。それはxhtmlなので、私は形式を知っています。これをやり遂げるにはどうすればいいですか?私はxsdを持っていますが、明らかにxmlの "タイプ"はありません。
//need to do this
String xml = <tag>hello</tag>;
Object o = new Object('blah','blah','blah');
o.setThisXmlField(xml);
marshaller.marshal(o, doc);
編集 - >これは私が
<xs:element name="course">
<xs:complexType>
<xs:sequence>
<xs:element name="courseSummary" type="courseSummary"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="courseSummary">
<xs:sequence>
<xs:any/>
</xs:sequence>
</xs:complexType>
これを達成する方法である等の生成されたJavaコードを使用する:あなたの最善の策は、のコンテンツを囲むために、おそらくです
Tidy tidy = new Tidy();
tidy.setXHTML(true);
String courseSummary = "some turruble xml <b>REALLY RUBBISH</li>";
Course c = new Course();
Document courseSummaryDoc = tidy.parseDOM(IOUtils.toInputStream(courseSummary),null);
CourseSummary summary = new CourseSummary();
summary.setAny(courseSummaryDoc.getDocumentElement());
c.setCourseSummary(summary);
+1 - @XmlAnyElementを@XmlAnyElement(MyDomHandler.class)のような 'DomHandler'で使用する場合は、XMLフラグメントを' Element'ではなく 'String'として表すことができます:http://blog.bdoughan。 com/2011/04/xmlanyelement-and-non-dom-properties.html –
ありがとう!これが解決策でした。 –