Как удалить объявление автономного атрибута в документе xml?
В настоящее время я создаю xml с помощью Java, а затем преобразую его в String. Объявление xml выглядит следующим образом:
DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
Document doc = docBuilder.newDocument();
doc.setXmlVersion("1.0");
Для преобразования документа в String я включаю следующее объявление:
TransformerFactory transfac = TransformerFactory.newInstance();
Transformer trans = transfac.newTransformer();
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
trans.setOutputProperty(OutputKeys.VERSION, "1.0");
trans.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
trans.setOutputProperty(OutputKeys.INDENT, "yes");
И затем я делаю преобразование:
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(doc);
trans.transform(source, result);
String xmlString = sw.toString();
Проблема заключается в том, что в атрибутах XML-декларации включен автономный атрибут, и я не хочу этого, но я хочу, чтобы появились атрибуты версии и кодировки:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
Есть ли какое-либо свойство, где это может быть указано?
Ответы
Ответ 1
Из того, что я прочитал, вы можете сделать это, вызвав метод ниже на Document
перед созданием DOMSource
doc .setXmlStandalone(true); //before creating the DOMSource
Другие комментарии
Если вы установите его "false", вы не сможете его отобразить или нет. Итак, setXmlStandalone (true) в документе. В трансформаторе, если вы хотите, чтобы выход использовал OutputKeys с любыми "да" или "нет", которые вам нужны. Если вы установите XmlStandalone (false) в Document, ваш вывод будет всегда автономным = "no", независимо от того, что вы установили (если вы установили) в Transformer.
Прочитайте тему в этом форуме