我设法通过jdom(odfdom-java)做到了这一点,毕竟一点都没有使用过。 绑定的xml本身存在于表示odt的xml中。 您只需要知道表单的ID或标签的名称,即可获得正确的节点。 之后,将构造一个字符串,其中包含带有表单数据的xml。 我的代码如下:

import org.apache.xerces.dom.DeepNodeListImpl;

import org.apache.xml.serialize.OutputFormat;

import org.apache.xml.serialize.XMLSerializer;

import org.w3c.dom.Document;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import java.io.IOException;

import java.util.Enumeration;

import java.util.zip.ZipEntry;

import java.util.zip.ZipFile;

public class TestXFormData {

private static StringBuilder nodeContent;

public static void main(String[] args) throws Exception {

//Unzip the openOffice Document

ZipFile zipFile = new ZipFile("C://myFile.odt");

Enumeration entries = zipFile.entries();

ZipEntry entry;

while(entries.hasMoreElements()) {

entry = (ZipEntry) entries.nextElement();

if (entry.getName().equals("content.xml")) {

// construct document

DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();

domFactory.setNamespaceAware(true);

DocumentBuilder docBuilder = domFactory.newDocumentBuilder();

Document doc = docBuilder.parse(zipFile.getInputStream(entry));

// print the document

printDocument(doc);

// get the node

NodeList list = doc.getElementsByTagName("myTagName");

Node node = ((DeepNodeListImpl) list).item(0);

nodeContent = new StringBuilder();

// print the xml with the form data

prettyPrint(node);

System.out.println(nodeContent.toString());

}

}

}

private static void prettyPrint(Node node) {

if (node.getNodeType() == Node.TEXT_NODE) {

nodeContent.append(node.getNodeValue());

} else if (node.getNodeType() == Node.ELEMENT_NODE) {

nodeContent.append("");

NodeList kids = node.getChildNodes();

for (int i = 0; i < kids.getLength(); i++) {

prettyPrint(kids.item(i));

}

nodeContent.append("" + node.getNodeName() + ">");

}

}

private static void printDocument(Document doc) throws IOException {

OutputFormat format = new OutputFormat(doc);

format.setIndenting(true);

XMLSerializer serializer = new XMLSerializer(System.out, format);

serializer.serialize(doc);

}

}

java解析odt_java - 使用Java从odt文件读取XForm - 堆栈内存溢出相关推荐

  1. java创建一个大文件,java - 用Java创建包含大文件的目录 - 堆栈内存溢出

    他们谈论将zip文件视为文件系统,并通过这种方式提供了递归压缩文件和文件夹的密钥,如您在链接中提到的示例中所看到的,将被视为文件系统,可以使用java.nio进行访问(甚至我都不知道!). 此外,您可 ...

  2. java远程计算机终止,java - javax.net.ssl.SSLHandshakeException:远程主机终止了握手 - 堆栈内存溢出...

    我已经使用以下命令在Java信任库(cacerts)中安装了证书: keytool-导入-文件" C:\\ Users \\ kdursoji \\ Downloads \\ Zscaler ...

  3. Tiled有java版本吗_java - TMX Tiled Andengine Android-致命意外- - 堆栈内存溢出

    刚开始使用tmx平铺的地图文件作为2d平台游戏的地图. 这是我到目前为止的代码. private void loadLevel() { // TODO Auto-generated method st ...

  4. java 获取permgen_java - Java:如何检查当前的Perm / PermGen大小? - 堆栈内存溢出

    您可以在这里使用jmap ,它是JVM堆转储工具. 例如: jmap -heap 5900 它将打印: Heap Configuration: MinHeapFreeRatio = 40 MaxHea ...

  5. java poi 段落行间距_java - Apache poi XWPF Paragraph行间距 - 堆栈内存溢出

    我正在尝试使用Java / Coldfusion中的Apache Poi构建一个word文档. 到目前为止,它让我做了很多我想要的格式,除了段落的行间距. 有谁知道如何将段落设置为单行间隔? 它不断构 ...

  6. java构建继承树_java - 使用继承构建通用树 - 堆栈内存溢出

    我正在构建一个通用的Tree类,它支持子树的继承. 但我遇到了一些问题. 请你帮帮我吗? 描述 让我们定义Tree类和BlueTree类,其中BlueTree extends Tree . 让我们定义 ...

  7. android 415错误,java - Android Retrofit2无法添加标头(415错误代码) - 堆栈内存溢出...

    我正在尝试通过skyscanner api访问票证数据并将其传递到我的视图,但是我无法实现这一点,因为我收到415错误代码,我正在使用Retrofit2并以编程方式添加标头. 我的界面如下所示: pu ...

  8. java ipv6校验_java - IPv6地址验证和规范化[关闭] - 堆栈内存溢出

    我只是通过adhoc方法来检查IPV4和IPV6两种寻址方案的有效性:这是我的代码......我的代码总是欢迎更正. 如果我的解决方案有误,请原谅我. #include #include #inclu ...

  9. java从端口接收数据_java - Java中通过串行端口接收数据的效率更高 - 堆栈内存溢出...

    这是代码片段 我在这里启动一个动作监听器 try { port_seleted.addEventListener(this); } catch (TooManyListenersException e ...

最新文章

  1. 关于QQ群共享一百多K以上的文件上传失败的问题
  2. Java加密与解密笔记(三) 非对称加密
  3. python程序员需要掌握哪些技术-高级的python 后端程序员, 应该掌握哪些技能点 ?...
  4. 连年亏损的平安健康,能否成为中国版“联合健康”?
  5. addeventlistener不支持ajax_十万个Web前端面试题之AJAX、axios、fetch的区别
  6. 勤学如春起之苗,不见其增,日有所长!
  7. html大学生活主题班会,我的大学生活主题班会策划书
  8. IT 人士工作中的十不要!
  9. homebrew osx下面最优秀的包管理工具
  10. 小程序 微信小商店 获取商品列表
  11. SecureCRT的安装与破解(过程很详细!!!)
  12. 语音识别(ASR)--语音转文字
  13. CSDN博客索引-2
  14. 国产 CAE 软件研发
  15. 计算机网络基础知识——(一)
  16. 类别,非正式协议,正式协议
  17. 成都艾司博讯电商:拼多多店铺类目选错如何退店?
  18. C/C++#include简单介绍
  19. Loading 用户体验 - 加载时避免闪烁
  20. 商务汇报PPT制作的七堂课-第三课:结构搭建

热门文章

  1. 树莓派上开热点(AP)的三种办法实践结果V2
  2. Android-线程常用方法-线程同步
  3. How to Become Great at Just About Anything (Rebroadcast)
  4. leetcode-189. 轮转数组
  5. SQL Server 只有mdf文件没有ldf文件如何附加
  6. 程序员是世界上最聪明最务实的群体-没有之一
  7. 怎么把pdf转换成word转换器
  8. 视频监控系统-电子地图编辑器
  9. utorrent 2.04 Firewall拒绝访问解决办法
  10. OGame什么是快速攻击RF