⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlwritertest.java

📁 解决如何把XML应用到JAVA里问题
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        String xml = buffer.toString();
        log(xml);

        Document doc2 = DocumentHelper.parseText(xml);
        String text = doc2.valueOf("/root/meaning");
        String expected = "to live";

        assertEquals("valueOf() returns the correct text padding", expected,
                text);

        assertEquals("getText() returns the correct text padding", expected,
                doc2.getRootElement().element("meaning").getText());
    }

    public void testPadding() throws Exception {
        Document doc = DocumentFactory.getInstance().createDocument();
        Element root = doc.addElement("root");
        root.addText("prefix    ");
        root.addElement("b");
        root.addText("      suffix");

        OutputFormat format = new OutputFormat("", false);
        format.setOmitEncoding(true);
        format.setSuppressDeclaration(true);
        format.setExpandEmptyElements(true);
        format.setPadText(true);
        format.setTrimText(true);

        StringWriter buffer = new StringWriter();
        XMLWriter writer = new XMLWriter(buffer, format);
        writer.write(doc);

        String xml = buffer.toString();

        System.out.println("xml: " + xml);

        String expected = "<root>prefix <b></b> suffix</root>";
        assertEquals(expected, xml);
    }

    public void testPadding2() throws Exception {
        Document doc = DocumentFactory.getInstance().createDocument();
        Element root = doc.addElement("root");
        root.addText("prefix");
        root.addElement("b");
        root.addText("suffix");

        OutputFormat format = new OutputFormat("", false);
        format.setOmitEncoding(true);
        format.setSuppressDeclaration(true);
        format.setExpandEmptyElements(true);
        format.setPadText(true);
        format.setTrimText(true);

        StringWriter buffer = new StringWriter();
        XMLWriter writer = new XMLWriter(buffer, format);
        writer.write(doc);

        String xml = buffer.toString();

        System.out.println("xml: " + xml);

        String expected = "<root>prefix<b></b>suffix</root>";
        assertEquals(expected, xml);
    }

    /*
     * This must be tested manually to see if the layout is correct.
     */
    public void testPrettyPrinting() throws Exception {
        Document doc = DocumentFactory.getInstance().createDocument();
        doc.addElement("summary").addAttribute("date", "6/7/8").addElement(
                "orderline").addText("puffins").addElement("ranjit")
                .addComment("Ranjit is a happy Puffin");

        XMLWriter writer = new XMLWriter(System.out, OutputFormat
                .createPrettyPrint());
        writer.write(doc);

        doc = DocumentFactory.getInstance().createDocument();
        doc.addElement("summary").addAttribute("date", "6/7/8").addElement(
                "orderline").addText("puffins").addElement("ranjit")
                .addComment("Ranjit is a happy Puffin").addComment(
                        "another comment").addElement("anotherElement");
        writer.write(doc);
    }

    public void testAttributeQuotes() throws Exception {
        Document doc = DocumentFactory.getInstance().createDocument();
        doc.addElement("root").addAttribute("test", "text with ' in it");

        StringWriter out = new StringWriter();
        XMLWriter writer = new XMLWriter(out, OutputFormat
                .createCompactFormat());
        writer.write(doc);

        String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
                + "<root test=\"text with ' in it\"/>";
        assertEquals(expected, out.toString());
    }

    public void testBug868408() throws Exception {
        Document doc = getDocument("/xml/web.xml");
        Document doc2 = DocumentHelper.parseText(doc.asXML());
        assertEquals(doc.asXML(), doc2.asXML());
    }

    public void testBug923882() throws Exception {
        Document doc = DocumentFactory.getInstance().createDocument();
        Element root = doc.addElement("root");
        root.addText("this is ");
        root.addText(" sim");
        root.addText("ple text ");
        root.addElement("child");
        root.addText(" contai");
        root.addText("ning spaces and");
        root.addText(" multiple textnodes");

        OutputFormat format = new OutputFormat();
        format.setEncoding("UTF-8");
        format.setIndentSize(4);
        format.setNewlines(true);
        format.setTrimText(true);
        format.setExpandEmptyElements(true);

        StringWriter buffer = new StringWriter();
        XMLWriter writer = new XMLWriter(buffer, format);
        writer.write(doc);

        String xml = buffer.toString();
        log(xml);

        int start = xml.indexOf("<root");
        int end = xml.indexOf("/root>") + 6;
        String eol = "\n"; // System.getProperty("line.separator");
        String expected = "<root>this is simple text" + eol
                + "    <child></child>containing spaces and multiple textnodes"
                + eol + "</root>";
        System.out.println("Expected:");
        System.out.println(expected);
        System.out.println("Obtained:");
        System.out.println(xml.substring(start, end));
        assertEquals(expected, xml.substring(start, end));
    }

    public void testEscapeXML() throws Exception {
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        OutputFormat format = new OutputFormat(null, false, "ISO-8859-2");
        format.setSuppressDeclaration(true);

        XMLWriter writer = new XMLWriter(os, format);

        Document document = DocumentFactory.getInstance().createDocument();
        Element root = document.addElement("root");
        root.setText("bla &#c bla");

        writer.write(document);

        String result = os.toString();
        System.out.println(result);

        Document doc2 = DocumentHelper.parseText(result);
        doc2.normalize(); // merges adjacant Text nodes
        System.out.println(doc2.getRootElement().getText());
        assertNodesEqual(document, doc2);
    }

    public void testWriteEntities() throws Exception {
        String xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
                + "<!DOCTYPE xml [<!ENTITY copy \"&#169;\"> "
                + "<!ENTITY trade \"&#8482;\"> "
                + "<!ENTITY deg \"&#x00b0;\"> " + "<!ENTITY gt \"&#62;\"> "
                + "<!ENTITY sup2 \"&#x00b2;\"> "
                + "<!ENTITY frac14 \"&#x00bc;\"> "
                + "<!ENTITY quot \"&#34;\"> "
                + "<!ENTITY frac12 \"&#x00bd;\"> "
                + "<!ENTITY euro \"&#x20ac;\"> "
                + "<!ENTITY Omega \"&#937;\"> ]>\n" + "<root />";

        SAXReader reader = new SAXReader("org.apache.xerces.parsers.SAXParser");
        reader.setIncludeInternalDTDDeclarations(true);

        Document doc = reader.read(new StringReader(xml));
        StringWriter wr = new StringWriter();
        XMLWriter writer = new XMLWriter(wr);
        writer.write(doc);

        String xml2 = wr.toString();
        System.out.println(xml2);

        Document doc2 = DocumentHelper.parseText(xml2);

        assertNodesEqual(doc, doc2);
    }

    public void testEscapeChars() throws Exception {
        Document document = DocumentFactory.getInstance().createDocument();
        Element root = document.addElement("root");
        root.setText("blahblah " + '\u008f');

        XMLWriter writer = new XMLWriter();
        StringWriter strWriter = new StringWriter();
        writer.setWriter(strWriter);
        writer.setMaximumAllowedCharacter(127);
        writer.write(document);

        String xml = strWriter.toString();
    }

    public void testEscapeText() throws SAXException {
        StringWriter writer = new StringWriter();
        XMLWriter xmlWriter = new XMLWriter(writer);
        xmlWriter.setEscapeText(false);

        String txt = "<test></test>";

        xmlWriter.startDocument();
        xmlWriter.characters(txt.toCharArray(), 0, txt.length());
        xmlWriter.endDocument();

        String output = writer.toString();
        System.out.println(output);
        assertTrue(output.indexOf("<test>") != -1);
    }

    public void testNullCData() {
        Element e = DocumentHelper.createElement("test");
        e.add(DocumentHelper.createElement("another").addCDATA(null));

        Document doc = DocumentHelper.createDocument(e);

        assertEquals(-1, e.asXML().indexOf("null"));
        assertEquals(-1, doc.asXML().indexOf("null"));

        System.out.println(e.asXML());
        System.out.println(doc.asXML());
    }

    protected void generateXML(ContentHandler handler) throws SAXException {
        handler.startDocument();

        AttributesImpl attrs = new AttributesImpl();
        attrs.clear();
        attrs.addAttribute("", "", "name", "CDATA", "arvojoo");
        handler.startElement("", "", "processes", attrs);

        String text = "jeejee";
        char[] textch = text.toCharArray();
        handler.characters(textch, 0, textch.length);
        handler.endElement("", "", "processes");
        handler.endDocument();
    }
}

/*
 * Redistribution and use of this software and associated documentation
 * ("Software"), with or without modification, are permitted provided that the
 * following conditions are met:
 * 
 * 1. Redistributions of source code must retain copyright statements and
 * notices. Redistributions must also contain a copy of this document.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 * 
 * 3. The name "DOM4J" must not be used to endorse or promote products derived
 * from this Software without prior written permission of MetaStuff, Ltd. For
 * written permission, please contact dom4j-info@metastuff.com.
 * 
 * 4. Products derived from this Software may not be called "DOM4J" nor may
 * "DOM4J" appear in their names without prior written permission of MetaStuff,
 * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
 * 
 * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
 * 
 * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * 
 * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -