[英]Java - Convert XML file to Docx file
我遇到了一個問題,在嘗試了幾種不同的解決方案之后,我陷入了困境。
我有一個從Word模板生成的XML文件模板。 我將此XML文檔轉換為字符串,然后在其中搜索關鍵字,然后將其替換為另一個字符串。 然后,我再次從該字符串創建XML文檔:
String xmlAsString = "XYZ"; // My XML String
try {
java.io.FileWriter fw = new FileWriter("src/test/resources/test.xml");
fw.write(xmlAsString);
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
現在,我想將此XML文檔轉換回有效的DOCX文檔,但找不到該問題的解決方案。
有很多方法可以解決您的問題。 此處的示例使用docx4j。
首先是簡單的內容替換(例如,將“ $ {titleofproject}”替換為“我是標題”); 參見https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/VariableReplace.java,但這是脆弱的(拆分運行),並且僅限於簡單的文本替換。
第二個是在XML級別替換MainDocument部分(document.xml)中的內容:
String xml = wordMLPackage.getMainDocumentPart().getXML();
// do something
String result = xml;
// now inject your result contents
wordMLPackage.getMainDocumentPart().unmarshal(
new ByteArrayInputStream(result.getBytes(StandardCharsets.UTF_8)));
第三是使用FlatOPC XML(整個zip文件在一個XML文件中表示); 參見https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/ConvertOutFlatOpenPackage.java和ConvertInFlatOpenPackage.java
但是,與上面的XML級別相比,更好的替代方法通常是使用內容控制XML數據綁定。
我不確定,但可能會對您有幫助。 此代碼快照會將您的.xml文件轉換為.docx文件。
public class ReadXmlFile {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
File xmlFile = new File("inFile.xml");
Reader fileReader = new FileReader(xmlFile);
BufferedReader bufReader = new BufferedReader(fileReader);
StringBuilder sb = new StringBuilder();
String line = bufReader.readLine();
Writer out = new FileWriter("outFile.docx");
while( line != null)
{
sb.append(line).append("\n");
line = bufReader.readLine();
if(line !=null)
out.write(line);
}
out.close();
fileReader.close();
String xml2String = sb.toString();
System.out.println(xml2String);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.