создать простой XML в Java - PullRequest
0 голосов
/ 26 сентября 2011

Я пытаюсь создать сервер, который отправляет xml-файл клиенту. Я получаю информацию из базы данных и хочу собрать из этого XML-файла.

Но у меня проблема с:

DocumentBuilder documentBuilder = null;
Document doc =documentBuilder.newDocument();

Я получаю исключение NullPointerException. Вот мне полный код:

public void createXmlTree() throws Exception {
  //This method creates an element node
  DocumentBuilder documentBuilder = null;
  Document doc =documentBuilder.newDocument();

  Element root = doc.createElement("items");
  //adding a node after the last child node of the specified node.

  doc.appendChild(root);
  for(int i=0;i<db.stories.size();i++){
    Element child = doc.createElement("item");
    root.appendChild(child);

    Element child1 = doc.createElement("title");
    child.appendChild(child1);

    Text text = doc.createTextNode(db.stories.get(i).title);
    child1.appendChild(text);

    //Comment comment = doc.createComment("Employee in roseindia");
    //child.appendChild(comment);

    Element child2 = doc.createElement("date");
    child.appendChild(child2);

    Text text2 = doc.createTextNode(db.stories.get(i).date);
    child2.appendChild(text2);

    Element child3 = doc.createElement("text");
    child.appendChild(child3);

    Text text3 = doc.createTextNode(db.stories.get(i).text);
    child3.appendChild(text3);

    root.appendChild(child3);

Ответы [ 4 ]

2 голосов
/ 26 сентября 2011

Ну да, вы получите получите NullPointerException.Вы вызываете метод с нулевой ссылкой - очень ясно, учитывая, что вы присвоили documentBuilder нулевое значение в строке ранее.Для начала вам нужно получить экземпляр DocumentBuilder.Например:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = factory.newDocumentBuilder();
1 голос
/ 26 сентября 2011

Вам действительно нужно писать XML вручную?У вас есть XSD XML, который вы хотите написать?

Потому что было бы легче сгенерировать некоторые классы с использованием XJC / JAXB и использовать маршаллер для написания вашего XML-файла.

1 голос
/ 26 сентября 2011

Ребята правы насчет DocumentBuilder. Но могу ли я предложить вам другое решение? Ваш сервлет в основном занимается созданием самого XML, то есть производит разметку. Это цель JSP. Вы можете реализовать простую страницу JSP, которая будет фактически содержать шаблон вашего XML и некоторый код, который вставляет динамические данные. Это намного проще и легче поддерживать.

Да, JSP обычно генерирует HTML, но никто не сказал, что они не могут генерировать XML или любой другой текстовый формат. Только не забудьте установить тип контента на text/xml.

1 голос
/ 26 сентября 2011

конечно, вы получаете исключение NullPointerException, ваш DocumentBuilder имеет значение null.Попробуйте сначала создать его экземпляр.

    // Step 1: create a DocumentBuilderFactory
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

    // Step 2: create a DocumentBuilder
    DocumentBuilder db = dbf.newDocumentBuilder();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...