私は現在Javaを使用してxmlを作成していて、それを文字列に変換しています。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"?>
それを指定できるプロパティはありますか?
私が読んだことから、Document
を作成する前にDOMSource
で以下のメソッドを呼び出すことでこれを行うことができます。
_doc.setXmlStandalone(true); //before creating the DOMSource
_
false
に設定すると、表示するかどうかを制御できません。つまり、Document
のsetXmlStandalone(true)
です。トランスフォーマーで出力が必要な場合は、必要な「はい」または「いいえ」を指定してOutputKeys
を使用します。 Document
でsetXmlStandalone(false)
を使用すると、Transformer
で何を設定したかに関係なく(設定した場合)、出力は常に_standalone="no"
_になります。
このフォーラムの スレッドを読む