Как удалить отдельное объявление атрибута в документе XML? - PullRequest
31 голосов
/ 09 декабря 2011

В настоящее время я создаю xml с использованием Java, а затем преобразую его в строку. Объявление в формате xml выглядит следующим образом:

DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
Document doc = docBuilder.newDocument();
doc.setXmlVersion("1.0");

Для преобразования документа в строку, я включаю следующее объявление:

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 Ответ

43 голосов
/ 09 декабря 2011

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

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

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

Читать ветку на этом форуме

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...