Синтаксический анализатор XML - невозможно получить модифицированный XML - PullRequest
0 голосов
/ 05 ноября 2011

Я тестирую стандартный xml-анализатор с кодом

xml-файл

<? xml version='1.0' encoding='UTF-8'?>
<A></A>

и Java ...

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db=null;
        try {
            db = dbf.newDocumentBuilder();
        } catch (ParserConfigurationException e) {

            e.printStackTrace();
        }
        Document doc=null;
        try {
            doc = (Document) db.parse(filePath);

        } catch (SAXException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }

        Element a= (Element) doc.getElementsByTagName("A").item(0);
        Element b=(Element) doc.createElement("B");
        b.setAttribute("id", "12345");
        a.appendChild(b);



                Transformer transformer=null;
        try {
            transformer = TransformerFactory.newInstance().newTransformer();
        } catch (TransformerConfigurationException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (TransformerFactoryConfigurationError e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");

        //initialize StreamResult with File object to save to file
        StreamResult result = new StreamResult(new StringWriter());
        DOMSource source = new DOMSource(doc);
        try {
            transformer.transform(source, result);
        } catch (TransformerException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        String xml= result.getWriter().toString();

... для некоторыхпричина, по которой xml var значение всегда

[# document: null]

хотя я хочу получить сам xml :( Так что мне просто интереснопочему он всегда нулевой? И как получить внутренний модифицированный XML, чтобы сохранить его, скажем, в файл?

1 Ответ

0 голосов
/ 05 ноября 2011

Работает на моей машине - вывод, который вы говорите [#docuument: null], является нормальным для toString в документе.

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbf.newDocumentBuilder();
ByteArrayInputStream bis = new ByteArrayInputStream(
        "<A></A>".getBytes());
Document doc = db.parse(bis);

Element a = (Element) doc.getElementsByTagName("A").item(0);
Element b = (Element) doc.createElement("B");
b.setAttribute("id", "12345");
a.appendChild(b);

Transformer transformer = TransformerFactory.newInstance()
        .newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");

// initialize StreamResult with File object to save to file
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);

String xml = result.getWriter().toString();
System.out.println(xml);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...