0

xmlに変換したい文字列のリストがあります。DOMを使用してこれを行うにはどうすればよいですか?SourceXMLを生成するために使用する文字列を使用してドキュメントを作成する方法がわかりません。

ドキュメントを生成するためのサンプルコードを誰かに見せてもらえますか?たとえば、XMLは次のようになります。

ArrayList<String> fruits

<Fruits>
  <fruit>Apple<fruit>
  <fruit>Grape<fruit>
<Fruits>

コードは次のようになると思います。

TransformerFactory transFact = TransformerFactory.newInstance();
Transformer serializer = transFact.newTransformer();
Properties props = new Properties();
props.put("method", "xml");
props.put("indent", "yes");
serializer.setOutputProperties(props);
Source source = new DOMSource(document); //need to create a document
Result result = new StreamResult(PrintWriter);  
4

3 に答える 3

3
    ArrayList<String> a = new ArrayList<String>();
    a.add("apple"); a.add("mango");

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

    Document doc = docBuilder.newDocument();
    Element root = doc.createElement("Fruits");
    doc.appendChild(root);

    for(String name: a){
        Element fruit = doc.createElement("fruit");
        fruit.appendChild(doc.createTextNode(name)); 
        root.appendChild(fruit);
    }
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    DOMSource source = new DOMSource(doc);
    StreamResult result = new StreamResult(new File("C:\\file.xml"));

    transformer.transform(source, result);
于 2012-11-19T15:08:12.267 に答える
1

これにはJAXBを使用します。

@XmlRootElement(name = "Fruits")
@XmlAccessorType(XmlAccessType.FIELD)
public static class Fruits
{
    @XmlElement(name = "fruit")
    public List<String> fruit = new ArrayList<String>();
}

public static void main(String[] args) throws Exception
{
    Fruits fruits = new Fruits();
    fruits.fruit.add("Apple");
    fruits.fruit.add("Grape");

    TransformerFactory transFact = TransformerFactory.newInstance();
    Transformer serializer = transFact.newTransformer();
    Properties props = new Properties();
    props.put("method", "xml");
    props.put("indent", "yes");
    serializer.setOutputProperties(props);
    Source source = new JAXBSource(JAXBContext.newInstance(Fruits.class), fruits);
    Result result = new StreamResult(System.out);
    serializer.transform(source, result);
}
于 2012-11-19T15:07:32.633 に答える
0

「fruits」リストの文字列をソースとして使用してドキュメントを作成する場合は、次のようにします。

    StringBuilder sb  = new StringBuilder();
    for(String s : fruits) {
        sb.append(s).append('\n');
    }
    DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
    Document doc = f.newDocumentBuilder().parse(new InputSource(new StringReader(sb.toString())));
于 2012-11-19T15:10:31.227 に答える