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

Posted

技术标签:

【中文标题】在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元素名称的主要内容,如果未能解决你的问题,请参考以下文章

在 JAXB 编组时删除命名空间前缀

java 更改XML元素的名称

如何使用 XSLT 替换 XML 节点名称中的字符 - 更改根元素

有没有办法使用 xsl 更改 xml 中元素的名称?

如何在 Spring Boot 中从 mongodb 更改 geojson (GeoJsonPolygon) 的编组?

如何(un)编组子类中根元素的值