我一直在使用XStream進行一些簡單的XML轉換,但是我被困在這一張上。我想要做的是創建一個Java程序來讀取和調整這種類型的XML;使用XStream將過度複雜的XML轉換爲Java對象
<?xml version="1.0" encoding="utf-8"?>
<actor id="id273212" PGFVersion="0.19" GSCVersion="0.10.4">
<attributes>
<text id="name">Actor 1c</text>
<real id="time">0</real>
<point id="position">
<real id="x">0</real>
<real id="y">0</real>
</point>
<size id="size">
<real id="width">120</real>
<real id="height">120</real>
</size>
<angle id="rotation">0</angle>
<color id="color">
<real id="red">1</real>
<real id="green">1</real>
<real id="blue">1</real>
<real id="alpha">1</real>
</color>
<image id="image" />
<text id="tags" />
<boolean id="preloadArt">true</boolean>
</attributes>
<behaviors />
<aspects>
<graphics>
<attributes>
<boolean id="visible">true</boolean>
<enumeration id="blendingMode">0</enumeration>
<enumeration id="horizontalWrap">0</enumeration>
<enumeration id="verticalWrap">0</enumeration>
<enumeration id="horizontalAnchor">0</enumeration>
<enumeration id="verticalAnchor">0</enumeration>
<boolean id="flipHorizontally">false</boolean>
<boolean id="flipVertically">false</boolean>
<integer id="tileWidth">0</integer>
<integer id="tileHeight">0</integer>
</attributes>
</graphics>
<motion>
<attributes>
<point id="linearVelocity">
<real id="x">0</real>
<real id="y">0</real>
</point>
<real id="angularVelocity">0</real>
<real id="maxSpeed">0</real>
<boolean id="applyMaxSpeed">false</boolean>
</attributes>
</motion>
<physics>
<attributes>
<real id="density">1</real>
<real id="friction">3</real>
<real id="restitution">1</real>
<boolean id="fixedRotation">false</boolean>
<boolean id="movable">true</boolean>
<enumeration id="collisionShape">0</enumeration>
<real id="drag">0</real>
<real id="angularDrag">0</real>
</attributes>
</physics>
</aspects>
</actor>
我不明白怎麼做:<text id="name">Actor 1c</text>
我能得到的最接近的是:
<text id="name">
<variables>Actor 1c</variables>
</text>
我做什麼,我創建了接受一個「文本」類字符串(「Actor 1c」)轉換爲「變量」。
我試過使用「addImplicitCollection」,但它不起作用。我知道這個問題沒有一個簡單的答案,但我應該如何構建我的Java,以便我可以讀取這些XML文件?
下面介紹如何使用'@ XmlValue'將它與JAXB進行映射:http://blog.bdoughan.com/2011/06/jaxb-and-complex-types-with-simple.html –
@Blaise Doughan I仍然不明白。你在那裏描述的就像使用'xstream.useAttributeFor(PhoneNumber.class,「type」);' 我已經能夠做到這一點。當我在TextNumber中使用'Text text1 = new Text();'時,我無法打印出來。 – cbt