3

以下のコード ( http://jax-ws.java.net/nonav/jax-ws-20-fcs/arch/com/sun/xml/ws/util/xml/StAXSource.htmlのサンプル コードに基づく)

String xml = "<a><b>a text</b><!--a comment--><b/></a>";
StringReader sr = new StringReader(xml);
XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(sr);
Source source = new StAXSource(reader);     
//Source source = new StreamSource(sr);
Result result = new StreamResult(System.out);      
TransformerFactory.newInstance().newTransformer().transform(source, result);

次の結果が得られます。

<?xml version="1.0" encoding="UTF-8"?><a><b>a text</b><b/></a>

つまり、xml コメントを取り除きます。StAXSource/XMLStreamReader を StreamSource に置き換えると、コメントは保持されます。

XMLStreamReader/StAXSource の組み合わせがそれらを取り除く理由と、それを防ぐ方法があるかどうかを知っている人はいますか? テストは、サードパーティの jar を使用しない 1.6 および 1.7 環境で行われたため、XMLStreamReader は

com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl 

ありがとう

4

1 に答える 1

0

編集:ここで説明したように試してみました

case XMLStreamConstants.COMMENT:
  System.out.print("<!--");
  if (xmlr.hasText())
     System.out.print(xmlr.getText());
...

コメントを読みます。ただし、これはまだ元の質問には答えていません...

于 2016-10-24T10:53:45.730 に答える