Подтвердить что ты не робот

Как удалить объявление автономного атрибута в документе 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"?>

Есть ли какое-либо свойство, где это может быть указано?

4b9b3361

Ответ 1

Из того, что я прочитал, вы можете сделать это, вызвав метод ниже на Document перед созданием DOMSource

doc .setXmlStandalone(true); //before creating the DOMSource

Другие комментарии

Если вы установите его "false", вы не сможете его отобразить или нет. Итак, setXmlStandalone (true) в документе. В трансформаторе, если вы хотите, чтобы выход использовал OutputKeys с любыми "да" или "нет", которые вам нужны. Если вы установите XmlStandalone (false) в Document, ваш вывод будет всегда автономным = "no", независимо от того, что вы установили (если вы установили) в Transformer.

Прочитайте тему в этом форуме