在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元素名称的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 XSLT 替换 XML 节点名称中的字符 - 更改根元素