gpt4 book ai didi

java - JAXB - 生成示例 xml?

转载 作者:行者123 更新时间:2023-11-30 11:48:16 25 4
gpt4 key购买 nike

您知道 xml 编辑器如何使您能够从 xsd 方案创建示例 xml,用随机内容填充所有元素和属性。现在我只得到空的根元素标签。是否可以使用 JAXB 编码 xml 并出于测试原因实现类似的东西? 我是 java 和 jaxb 的新手,感谢任何帮助。

编辑。根元素类代码:

        @XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"document",
"taskList",
"addDocuments",
"expansion",
"acknowledgement"
})
@XmlRootElement(name = "Header")
public class Header {

@XmlElement(name = "Document")
protected DocumentType document;
@XmlElement(name = "TaskList")
protected TaskListType taskList;
@XmlElement(name = "AddDocuments")
protected AddDocumentsType addDocuments;
@XmlElement(name = "Expansion")
protected ExpansionType expansion;
@XmlElement(name = "Acknowledgement")
protected AcknowledgementType acknowledgement;
@XmlAttribute(name = "time", required = true)
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar time;
@XmlAttribute(name = "msg_type", required = true)
protected short msgType;
@XmlAttribute(name = "msg_id", required = true)
protected String msgId;
@XmlAttribute(name = "msg_acknow")
protected Short msgAcknow;
@XmlAttribute(name = "from_org_id", required = true)
protected String fromOrgId;
@XmlAttribute(name = "from_organization", required = true)
protected String fromOrganization;
@XmlAttribute(name = "from_department")
protected String fromDepartment;
@XmlAttribute(name = "from_sys_id", required = true)
protected String fromSysId;
@XmlAttribute(name = "from_system", required = true)
protected String fromSystem;
@XmlAttribute(name = "from_system_details")
protected String fromSystemDetails;
@XmlAttribute(name = "to_org_id")
protected String toOrgId;
@XmlAttribute(name = "to_organization", required = true)
protected String toOrganization;
@XmlAttribute(name = "to_department")
protected String toDepartment;
@XmlAttribute(name = "to_sys_id")
protected String toSysId;
@XmlAttribute(name = "to_system")
protected String toSystem;
@XmlAttribute(name = "to_system_details")
protected String toSystemDetails;
// getters n setters are omitted

}

创建 xml:

ObjectFactory objectFactory = new ObjectFactory();
Header header = objectFactory.createHeader();
JAXBContext jaxbContext = JAXBContext.newInstance(Header.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(header, file);

我得到的:

  <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
<Header msg_type="0" />

其他东西在哪里?我可以在不创建所有元素和属性并手动设置值的情况下接收类似于完整 xml 的内容吗?

最佳答案

可以做到,但请放心,没有简单的方法可以做到。在这些并不那么简单的问题中,对您来说挑战最小的是想出一组布局,您硬连接代码以匹配布局,数据是随机生成的。这意味着您定义了 XML 的“类”;使用某种 XML 编辑器,您可以定义 XML 的外观。当您对该可视化感到满意时,编写将生成该特定类型的 XML 的 JAXB 代码;使用随机生成的数据或任何其他适合您需求的方式。

“通用”方法可能是依赖良好的 JAXB 知识和反射 API。虽然可行,但我会称之为疯狂。

为了完整起见,您还可以使用 XSOM(不需要 JAXB)来执行相同的操作。

这并不是说我会鼓励您做上述任何事情,除非您有足够的时间和精力...您是否可以分享 XSD,或者至少分享您的工具的原因似乎在生成示例 XML 方面没有超出您的根基?根据您的说明,我可能会有不同的建议...

关于java - JAXB - 生成示例 xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8926052/

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