Написать комментарий вверху. xml файла? - PullRequest
0 голосов
/ 27 марта 2020

В настоящее время я пишу программу, которая записывает файл. xml. Я хочу разместить комментарий вверху файла (первая строка), в котором говорится о том, как изменение кода может испортить его. Возможно ли это с помощью XMLEncoder?

Вот мой код:

private static void serializeToXML(ArrayList<Item> list)
    { 
        try
        {
            XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(
                    new FileOutputStream(getSaveLocation())));
            encoder.writeObject(list);
            encoder.close();

        } catch (FileNotFoundException e)
        {
            System.err.println("Error writing list to XML File.");
        } 
    }

Спасибо!

1 Ответ

0 голосов
/ 27 марта 2020

Сначала Вы не можете иметь ничего до <?xml ... ?>.

Я полагаю, что следующее xml должно быть тем, что вы хотите:

<?xml version='1.0' encoding='UTF-8'?>
<!--Some insightful commentary here-->
<SomePojo>
    <id>1</id>
    <name>pojo1</name>
</SomePojo>

Вы можно попробовать формат данных Джексона- xml.

Тестовый код

import java.io.StringWriter;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;

import com.fasterxml.jackson.dataformat.xml.XmlMapper;

import org.testng.annotations.Test;

public class XMLWriteCommentTest {

@Test
public void test() throws Exception {
    // First create Stax components we need
    XMLInputFactory  xmlInputFactory = XMLInputFactory.newFactory();
    XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newFactory();
    StringWriter out = new StringWriter();
    XMLStreamWriter sw = xmlOutputFactory.createXMLStreamWriter(out);

    // then Jackson components
    XmlMapper mapper = new XmlMapper(xmlInputFactory);

    sw.writeStartDocument();
    // comment
    sw.writeComment("Some insightful commentary here");
    // Write whatever content POJOs...
    mapper.writeValue(sw, new SomePojo("1", "pojo1"));

    sw.writeEndDocument();
    // getResult
    String xml = out.toString();
    System.out.println(xml);
    }
}    
class SomePojo {
    private String id;
    private String name;

    public SomePojo(String id, String name){
        this.id = id;
        this.name = name;
    }

    public String getId(){
        return this.id;
    }

    public void setId(String id){
        this.id = id;
    }

    public String getName(){
        return this.name;
    }

    public void setName(String name){
        this.name = name;
    }
}

Зависимость Maven

<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.10.1</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...