From ff42219e3ea3d712f931ae7f26af236339b5cf23 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Tue, 17 Nov 2009 18:05:40 -0800 Subject: Fix KXmlSerializer so it won't generate invalid XML. We were allowing arbitrary characters to be output (which, surprisingly, XML does not), and we weren't correctly escaping CDATA sections that contained "]]>". Pull out some of my test helpers from DocumentBuilderTest into Support_Xml, because they're more generally useful when writing tests involving XML. Also correct a bunch of spelling mistakes in XmlSerializer's javadoc, since I happened to be reading through. --- .../src/test/java/tests/support/Support_Xml.java | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 support/src/test/java/tests/support/Support_Xml.java (limited to 'support') diff --git a/support/src/test/java/tests/support/Support_Xml.java b/support/src/test/java/tests/support/Support_Xml.java new file mode 100644 index 0000000..03ed4a1 --- /dev/null +++ b/support/src/test/java/tests/support/Support_Xml.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package tests.support; + +import java.io.ByteArrayInputStream; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import static junit.framework.Assert.assertEquals; + +public class Support_Xml { + public static Document domOf(String xml) throws Exception { + // DocumentBuilderTest assumes we're using DocumentBuilder to do this parsing! + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + dbf.setCoalescing(true); + dbf.setExpandEntityReferences(true); + + ByteArrayInputStream stream = new ByteArrayInputStream(xml.getBytes()); + DocumentBuilder builder = dbf.newDocumentBuilder(); + + return builder.parse(stream); + } + + public static String firstChildTextOf(Document doc) throws Exception { + NodeList children = doc.getFirstChild().getChildNodes(); + assertEquals(1, children.getLength()); + return children.item(0).getNodeValue(); + } + + public static Element firstElementOf(Document doc) throws Exception { + return (Element) doc.getFirstChild(); + } + + public static String attrOf(Element e) throws Exception { + return e.getAttribute("attr"); + } +} -- cgit v1.1