Java JAXB-生成示例xml?
您知道xml编辑器如何使您能够从xsd方案创建示例xml,并用随机内容填充所有元素和属性。现在我只得到空的根元素标记。出于测试原因,是否可以使用JAXB封送xml并实现类似的功能? 我是java和jaxb的新手,非常感谢您的帮助 编辑。 根元素类的代码:Java JAXB-生成示例xml?,java,xml,testing,xsd,jaxb,Java,Xml,Testing,Xsd,Jaxb,您知道xml编辑器如何使您能够从xsd方案创建示例xml,并用随机内容填充所有元素和属性。现在我只得到空的根元素标记。出于测试原因,是否可以使用JAXB封送xml并实现类似的功能? 我是java和jaxb的新手,非常感谢您的帮助 编辑。 根元素类的代码: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "document", "taskList"
@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的外观。当您对这种可视化感到满意时,编写JAXB代码来生成这种特定类型的XML;使用随机生成的数据或任何其他适合您需要的方式 一种“通用”的方法可以是依赖良好的JAXB知识和反射API。虽然可行,但我称之为疯狂 为了完整性,您还可以使用XSOM(不需要JAXB)来做同样的事情
这并不是说我会鼓励你做以上任何一件事,除非你有足够的时间和精力去做。。。您是否可以共享XSD,或者至少是您的工具在生成示例XML时似乎没有超出根目录的原因?根据你的澄清,我可能有不同的建议 我不是100%清楚你想要实现什么。你想让你的JAXB注释类用测试数据呈现为XML吗?现在我只得到空的根元素标记,我想用一些测试数据填充所有嵌套元素和属性。用schemagen从你的JAXB注释bean生成XSD,并要求您的XML编辑器从这个XSD生成一个示例XML。在java代码中有没有一种方法可以用jaxb实现这一点?不幸的是,在您的例子中,没有一种方法可以“神奇地”得到您想要的东西。您必须编写代码…对不起,我没有正确解释自己,请看编辑后的问题