Первая реализация API Google Chart с базой данных ASP.NET MVC

Поскольку вы начинаете с String, перед тем, как использовать Transformer, вам нужно скрывать объект DOM (например, Node). Однако, если вы знаете, что ваша строка XML действительна и вы не хотите нести накладные расходы на память при разборе строки в DOM, тогда запустите преобразование по DOM, чтобы получить строку обратно - вы могли бы просто сделать несколько старомодных символьный синтаксический анализ. Вставьте новую строку и пробелы после каждого символа </...>, счетчик keep и indent (чтобы определить количество пробелов), которые вы увеличиваете для каждого <...> и уменьшаетесь для каждого </...>, который вы видите.

Отказ от ответственности - Я сделал вырезание / вставку / редактирование текста ниже, поэтому они не могут компилироваться как есть.

public static final Element createDOM(String strXML) 
    throws ParserConfigurationException, SAXException, IOException {

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setValidating(true);
    DocumentBuilder db = dbf.newDocumentBuilder();
    InputSource sourceXML = new InputSource(new StringReader(strXML))
    Document xmlDoc = db.parse(sourceXML);
    Element e = xmlDoc.getDocumentElement();
    e.normalize();
    return e;
}

public static final void prettyPrint(Node xml, OutputStream out)
    throws TransformerConfigurationException, TransformerFactoryConfigurationError, TransformerException {
    Transformer tf = TransformerFactory.newInstance().newTransformer();
    tf.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    tf.setOutputProperty(OutputKeys.INDENT, "yes");
    tf.transform(new DOMSource(xml), new StreamResult(out));
}
0
задан Conor8630 6 March 2019 в 14:32
поделиться