java vuoto Come rimuovere la dichiarazione di attributo standalone nel documento xml?



xml schema guida (1)

Sto attualmente creando un XML usando Java e poi lo trasformo in una stringa. La dichiarazione XML è la seguente:

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

Per trasformare il documento in String, includo la seguente dichiarazione:

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");

E poi faccio la trasformazione:

StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(doc);
trans.transform(source, result);
String xmlString = sw.toString();

Il problema è che negli attributi della Dichiarazione XML, l'attributo standalone è incluso e io non lo voglio, ma voglio che appaiano gli attributi di versione e codifica:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

C'è qualche proprietà in cui potrebbe essere specificato?


Da quello che ho letto, puoi farlo chiamando il metodo seguente su Document prima di creare l'origine DOMSource :

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

Se lo si imposta false non è possibile controllarlo per apparire o meno . Quindi setXmlStandalone(true) sul Document . Nel trasformatore, se si desidera un'uscita, utilizzare OutputKeys con qualsiasi "sì" o "no" necessario. Se si setXmlStandalone(false) su Document l'output sarà sempre standalone="no" indipendentemente da ciò che si imposta (se impostato) in Transformer .

Leggi la discussione in questo forum





dom