gpt4 book ai didi

java - 为不同的 xml 子标签生成 xsd 和 Java 类 - JAXB

转载 作者:行者123 更新时间:2023-12-02 09:47:57 25 4
gpt4 key购买 nike

我想知道我们是否可以为不同的子 xml 标签生成 xsd 和相应的 java 类。我对 xml 解析还很陌生。

案例:1

<?xml version="1.0"?>
<SSNExportDocument xmlns="urn:com:ssn:schema:export:SSNExportFormat.xsd" Version="0.1" DocumentID="8b6fdfce-9f5f-4110-b6da-c5650f0851c2-1" ExportID="8b6fdfce-9f5f-4110-b6da-c5650f0851c2" JobID="464" RunID="3726980" CreationTime="2019-06-01T20:20:00.417-04:00" StartTime="2019-06-01T14:20:00.000-04:00" EndTime="2019-06-01T20:20:00.000-04:00">
<MeterData MeterName="CBRE-11459398" UtilDeviceID="11459398" MacID="anonymized">
<RegisterData StartTime="2019-06-01T14:00:00.000-04:00" EndTime="2019-06-01T14:00:00.000-04:00" NumberReads="1">
<RegisterRead ReadTime="2019-06-01T14:00:00.000-04:00" GatewayCollectedTime="2019-06-01T19:40:03.116-04:00" RegisterReadSource="REG_SRC_TYPE_EO_CURR_READ" Season="-1">
<Tier Number="0">
<Register Number="1" Summation="9981.2000" SummationUOM="GAL"/>
</Tier>
</RegisterRead>
</RegisterData>
</MeterData>
<MeterData MeterName="CBRE-11460365" UtilDeviceID="11460365" MacID="anonymized">
<RegisterData StartTime="2019-06-01T14:00:00.000-04:00" EndTime="2019-06-01T14:00:00.000-04:00" NumberReads="1">
<RegisterRead ReadTime="2019-06-01T14:00:00.000-04:00" GatewayCollectedTime="2019-06-01T19:40:03.113-04:00" RegisterReadSource="REG_SRC_TYPE_EO_CURR_READ" Season="-1">
<Tier Number="0">
<Register Number="1" Summation="142104.1000" SummationUOM="GAL"/>
</Tier>
</RegisterRead>
</RegisterData>
</MeterData>
</SSNExportDocument>

案例:2

<?xml version="1.0"?>
<SSNExportDocument xmlns="urn:com:ssn:schema:export:SSNExportFormat.xsd" Version="0.1" DocumentID="7b9d9a38-7739-4c67-9fb3-08ff1826d966-2" ExportID="7b9d9a38-7739-4c67-9fb3-08ff1826d966" JobID="465" RunID="2983700" CreationTime="
:2018-12-19T20:20:01.218-05:00" StartTime="2018-12-19T14:20:00.000-05:00" EndTime="2018-12-19T20:20:00.000-05:00">
<MeterData MeterName="CBRE-11460650" UtilDeviceID="11460650" MacID="00:11:01:ff:fe:00:db:ff">
<IntervalReadData IntervalLength="60" StartTime="2018-12-19T07:00:00.000-05:00" EndTime="2018-12-19T19:00:00.000-05:00" NumberIntervals="12">
<Interval EndTime="2018-12-19T08:00:00.000-05:00" GatewayCollectedTime="2018-12-19T19:40:03.052-05:00" BlockSequenceNumber="0" IntervalSequenceNumber="6636688262981226347">
<Reading Channel="1" RawValue="0.0" Value="0" UOM="GAL" BlockEndValue="78582.3000"/>
</Interval>
<Interval EndTime="2018-12-19T09:00:00.000-05:00" GatewayCollectedTime="2018-12-19T19:40:03.052-05:00" BlockSequenceNumber="0" IntervalSequenceNumber="6636703724863491951">
<Reading Channel="1" RawValue="0.0" Value="0" UOM="GAL" BlockEndValue="78582.3000"/>
</Interval>
</IntervalReadData
</MeterData>
</SSNExportDocument>

在上述情况下,您可以看到 MeterData 标签的内容不同,但 MeterData 标签保持不变。

最佳答案

XML 文档通常被描述为“半结构化”,但事实上,它们处于从高度结构化到高度非结构化的范围内。 Java 等传统编程语言最擅长处理高度结构化的数据,因此,JAXB 等数据绑定(bind)技术最适合这方面的工作。越是转向高度非结构化(例如 HTML),JAXB 就变得越困难;在这方面,您应该使用 DOM、XOM 或 JDOM 等通用树模型,或者 XSLT 和 XQuery 等专业 XML 处理语言。您展示的示例位于范围的中间,您开始走出 JAXB 舒适区,但它仍然是可行的。

这里还有另一个维度,即结构随时间的稳定性。架构更改得越频繁,您就越会脱离 JAXB 的舒适区。

关于java - 为不同的 xml 子标签生成 xsd 和 Java 类 - JAXB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56519911/

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