2017-12-19 8 views
0

Solrのxmlファイルを作成しようとしていますが、問題が発生しています。JavaのxmlElementにxmlAttributeを追加する

@XmlElement(name = "field") 
public String getAuthors() { 
    return authors; 
} 

public void setAuthors(List<String> authors) { 
    setValue(authors, "authors"); 
} 

@XmlElement(name = "field") 
public String getDate() { 
    return date; 
} 

public void setDate(List<String> date) { 
    setValue(date, "date"); 
} 

@XmlElement(name = "field", required = false) 
public String getContent() { 
    return content; 
} 

public void setContent(List<String> content) { 
    setValue(content, "content"); 
} 

など:私はそうのような私のクラスのXML要素ですmarhallerを伝えるために@XmlElementアノテーションを使用します。

は、その後、私はxmlファイル作成するには、次を使用します。それは動作しますが、私は私のxmlファイルは次の形式を持ちたい

XMLCreator collection = new XMLCreator(docs); 

File fileOut = new File("docs.xml"); 
BufferedWriter writer = new BufferedWriter(new FileWriter(fileOut)); 
JAXBContext jaxbContext = JAXBContext.newInstance(XMLCreator.class); 
Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); 

jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 

jaxbMarshaller.marshal(collection, writer); 

を:

<add> 
    <doc> 
     <field name="authors">Patrick Eagar</field> 
     <field name="subject">Sports</field> 
     <field name="dd">796.35</field> 
     <field name="numpages">128</field> 
     <field name="desc"></field> 
     <field name="price">12.40</field> 
     <field name="title">Summer of the all-rounder: Test and championship cricket in England 1982</field> 
     <field name="isbn">0002166313</field> 
     <field name="yearpub">1982</field> 
     <field name="publisher">Collins</field> 
    </doc> 
    <doc> 
     ... 
    </doc> 
</add> 

鉱山は現在、次のようなものです:

<add> 
    <doc id="2"> 
     <field></field> 
     <field>Sugai, I.</field> 
     <field></field> 
     <field>CACM December, 1958 </field> 
     <field>CA581202 JB March 22, 1978 8:29 PM </field> 
     <field></field> 
     <field>2 5 2 
       2 5 2 
       2 5 2 
     </field> 
     <field>Extraction of Roots by Repeated Subtractions for Digital 
       Computers </field> 
    </doc> 
</add> 

私がしたいのは、各フィールド要素にname属性を追加することです。これは@Xml ...アノテーションを使って可能ですか?

+0

を私の答えがhttps://stackoverflow.com/questions/47877912/formatting-xml-withを見-jaxb/47878150#47878150 - それは同じassesmentのように見えます。 – Vadim

+0

[XMLをJAXBでフォーマットする](https://stackoverflow.com/questions/47877912/formatting-xml-with-jaxb) – dur

+0

XML属性の値は、別の方法で処理されます。例:https:/ /stackoverflow.com/questions/5514752/xml-element-with-attribute-and-content-using-jaxb –

答えて

-1

あなたがATTRと値を使用したい場合は、複雑な要素と@XmlValue注釈が必要です。

@XmlElement(name = "doc") 
@XmlAccessorType(XmlAccessType.FIELD) 
private List<Node> list; 

@XmlElement(name = "field") 
@XmlAccessorType(XmlAccessType.FIELD) 
private Node node; 

@XmlAccessorType(XmlAccessType.FIELD) 
class Node { 
@XmlAttribute(name= "name") 
private String attr; 

@XmlValue 
private Srting value; 
} 
関連する問題