0
意見,我需要修改一個XML文件,但所有的意見在輸出修剪。我搜索並認爲我需要使用Transformer.setProperty()函數,但不知道如何使用它。任何幫助或暗示將非常感激。因爲我是一個XML新手,請在XML術語上簡單介紹一下。的Java XML變壓器 - 保留在輸出
感謝,
下面,如果我想保留,從XML文件的開頭開始的部分:
<!DOCTYPE ProductDataeXchangePackage [
<!-- DTD for IPC-2571
Public Identifier: "-//IPC//DTD 2571 200111//EN"
Official Location: http://webstds.ipc.org/2571.dtd -->
<!ELEMENT AdditionalAttribute EMPTY>
<!ATTLIST AdditionalAttribute name CDATA #REQUIRED
value CDATA #REQUIRED
dimension CDATA #IMPLIED
dataType (String |
Boolean |
Float |
Double |
Decimal |
DateTime |
Binary |
UriReference |
Other) #IMPLIED
dataTypeOther CDATA #IMPLIED
description CDATA #IMPLIED >
<!ELEMENT AdditionalAttributes (AdditionalAttribute+)>
]>
<?pdx_version 1.0?>
<?generated_by Oracle/Extract/9.3.4/63?>
.....
這裏是我的代碼,它重新寫入到另一個文件:
TransformerFactory transfac = TransformerFactory.newInstance();
Transformer trans = null;
try {
trans = transfac.newTransformer();
-->trans.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "??")<-- ;
} catch (TransformerConfigurationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(doc);
try {
trans.transform(source, result);
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String xmlString = sw.toString();
OutputStream f0;
byte buf[] = xmlString.getBytes();
f0 = new FileOutputStream("pdx1.xml");
for(int n=0;n<buf.length;n++) {
f0.write(buf[n]);
}
f0.close();
buf = null;
感謝Martin提供的信息。我會看看LSSerializer,但同時爲了符合截止日期,我想我會以舊式的方式來做 - 使用文件操作將DTD部分注入輸出文件。 – user1941319