gpt4 book ai didi

java - 写入docx文件

转载 作者:行者123 更新时间:2023-12-01 13:43:41 24 4
gpt4 key购买 nike

我尝试从 xml 文件解析文本,然后将其写入并使用 apachepoi XWPFDocument 保存在 docx 文件中,它创建 docx 文件,但它是空的,我看不到解析的 xml 中的文本。任何建议将不胜感激?

xml:

 `<document>
<el id="1">
<text>Rakesh</text>
</el>
<el id="2">
<text>John</text>
</el>
<el id="3">
<text>Rajesh</text>
</el>
</document>`

代码:

public void dothis() throws ParserConfigurationException, SAXException,
IOException, TransformerFactoryConfigurationError,
TransformerException {

in = new BufferedReader(new FileReader("D:\\Probe.xml"));
XWPFDocument document1 = new XWPFDocument();
XWPFParagraph paragraphOne = document1.createParagraph();
XWPFRun paragraphOneRunOne = paragraphOne.createRun();

paragraphOneRunOne.setText(in);
PrintWriter zzz = new PrintWriter(new FileWriter("D:\\dd3.docx"));
document1.write(zzz);
zzz.close();

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// Get the DOM Builder
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("D:\\Probe.xml");
List<Elementt> empList = new ArrayList<>();

// Iteration durch den Knoten und die kinder Knoten extraktion
NodeList nodeList = document.getDocumentElement().getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node instanceof Element) {
Elementt emp = new Elementt();
emp.id = node.getAttributes().getNamedItem("id").getNodeValue();

NodeList childNodes = node.getChildNodes();
for (int j = 0; j < childNodes.getLength(); j++) {
Node cNode = childNodes.item(j);

// Unterelementen von xml identifizieren
if (cNode instanceof Element) {
String content = cNode.getLastChild().getTextContent()
.trim();
switch (cNode.getNodeName()) {
case "text":
emp.text = content;
break;

}
}
}
empList.add(emp);
}

最佳答案

根据我在执行此操作时使用 XWPFRun 的经验:

paragraphOneRunOne.setText(in);

“in”需要等于您要输入的文本。您的“in”等于以下内容:

 in = new BufferedReader(new FileReader("D:\\Probe.xml"));

首先尝试解析文本,然后在角色运行时进行设置,例如:

String in = textFromXMLFile
paragraphOneRunOne.setText(in);

或者,如果我正确理解了您的代码(我还没有完成任何 xml),并且 ArrayList 包含您的文本,例如:

List<Elementt> empList = new ArrayList<>();
for(int i = 0; i < empList.length(); i++){
paragraphOneRunOne.setText(empList.get(i));
}

要点是,无论何时设置运行文本,此时使用的任何内容都似乎是输入的内容,因此在设置运行文本之前需要准备好相关数据。

祝你好运!

关于java - 写入docx文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20496794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com