diff options
author | Elliott Hughes <enh@google.com> | 2009-11-17 18:05:40 -0800 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2009-11-18 14:01:02 -0800 |
commit | ff42219e3ea3d712f931ae7f26af236339b5cf23 (patch) | |
tree | e7804dad30bb57b124eb5ce42aae8b7d0cd5d150 /support | |
parent | 6afd1e297342111db635163614383d62937ce5eb (diff) | |
download | libcore-ff42219e3ea3d712f931ae7f26af236339b5cf23.zip libcore-ff42219e3ea3d712f931ae7f26af236339b5cf23.tar.gz libcore-ff42219e3ea3d712f931ae7f26af236339b5cf23.tar.bz2 |
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.
Diffstat (limited to 'support')
-rw-r--r-- | support/src/test/java/tests/support/Support_Xml.java | 54 |
1 files changed, 54 insertions, 0 deletions
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"); + } +} |