package org.fanhongtao.tools.xmlreader; import org.xml.sax.Attributes; import org.xml.sax.SAXException; public class StringHandler extends PrintHandler { @Override public void characters(char[] ch, int start, int length) throws SAXException { sb.append(new String(ch, start, length)); newLine = false; } @Override public void endElement(String uri, String localName, String name) throws SAXException { level--; if (newLine) { indent(); } sb.append("</"); sb.append(name); sb.append('>'); sb.append(CRLF); newLine = true; } @Override public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { if (!newLine) { sb.append(CRLF); } indent(); level++; sb.append('<'); sb.append(name); addAttributes(attributes); sb.append('>'); newLine = false; } /** * 将元素的属性加入字符串 * * @param attributes */ protected void addAttributes(Attributes attributes) { for (int i = 0, n = attributes.getLength(); i < n; i++) { String attrName = attributes.getLocalName(i); String attrValue = attributes.getValue(i); sb.append(' '); sb.append(attrName); sb.append("=\""); sb.append(attrValue); sb.append('"'); } } }