java输出xml文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java输出xml文件相关的知识,希望对你有一定的参考价值。

SAXReader reader = new SAXReader();
Document doc = reader.read("/lastTime.xml");
Element root = doc.getRootElement();
root.element("time").setText("测试");
File file = new File("/lastTime.xml");
XMLWriter output = new XMLWriter(new FileWriter(file));
output.write(doc);
output.close();

这段代码已经读到xml中的内容,但是输出却不行。。。xml文件已经存在。。请大家帮我看看,很急,在线等!速度快有加分。最好把解决办法说一下。

root.element("time").setText("测试");这句是否有误?
root.element("time").getFirstChild().setText("测试");试试看
参考技术A 在Java中输出XML的方式有很多,如DOM、JDOM、DOM4J、SAX、XStream等,这五种解析器都很好的操作并输出XML文件。实际开发中,用得相对较多的是Xtream,下面就以XStream为例说明。
XStream主要是通过实体与XML文件互转映射,来达到快速解析XML或将XML文件转换为实体输出。具体步骤如下:
1、定义好一个实体类,实体的属性即对应XML文件节点或者节点的属性,这点可过注解声明。
2、在实体类中定义xtream对象,并使用单例的方式实例化xtream,同时指定输出XML文件的字符编码及要节点。
3、编写输出XML的方法toXML,在方法中直接能过xtream的toXML方法可以完成XML文件的输出。

实际开发中,采用何种方式解析并输出xml文件,视具体实际情况而定。性能相对较好的是DOM4J及SAX,DOM、JDOM只能适用到小文件,稍微大点的文件就会导致内存溢出。
如果要与实体互转操作,则XStream是首选,使用XStream操作较为方便快捷,相对容易些。现阶段很多项目中都会用到。

在java中编组时如何更改xml元素名称

【中文标题】在java中编组时如何更改xml元素名称【英文标题】:How to change xml element name when marshalling in java 【发布时间】:2019-03-08 12:10:58 【问题描述】:

我正在尝试使用 java 创建 xml 文件。下面给出了预期的输出

预期输出

<?xml version="1.0" encoding="utf-8"?>
<Invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" 
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" 
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>2019-112</cbc:ID>
<cbc:IssueDate>2019-01-21</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
</Invoice>      

实际输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns4:Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ns2="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:ns3="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ns4="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</CustomizationID>
<ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</ProfileID>
<InvoiceTypeCode>380</InvoiceTypeCode>
</ns4:Invoice>

为了清楚起见,让我们在预期输出中取“cbc:CustomizationID”,但在实际输出中只取“CustomizationID”

【问题讨论】:

你可以参考这个链接 - [***.com/questions/1299926/… 【参考方案1】:

实际输出与预期相同。只需更改命名空间的应用方式。

XML 解析器应该完全一样地对待它。

看看XML namespaces。

【讨论】:

【参考方案2】:

在使用 xjc 命令生成 java 类后,我更改了 @XmlElement(name = "cbc:CustomizationID", required = true)。部分问题已解决,但需要将根元素更改为插入的

【讨论】:

以上是关于java输出xml文件的主要内容,如果未能解决你的问题,请参考以下文章

如何用java生成一个xml文件

java 修改了 XML 文件 如何保存文件

使用java NodeList合并xml文件

Java可以如何实现文件的监听

在 Android java 中读取文本文件或 XML 文件

GroovyXml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 删除 Xml 文件中的节点 | 增加 Xml 文件中的节点 | 将修改后的 Xml 数据输出到文件中 )