java - 为什么 JAXB 的 xjc 的 XML 文件输入与我的不同?

标签 java xml jaxb xjc

我正在尝试使用 JAXB 的 xjc 从 XML 创建 Java 类,但在我遵循的所有示例中,我看到 XML 如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="employee" type="employee"/>

  <xs:complexType name="employee">
    <xs:sequence>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="salary" type="xs:double"/>
      <xs:element name="designation" type="xs:string" minOccurs="0"/>
      <xs:element name="address" type="address" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="id" type="xs:int" use="required"/>
  </xs:complexType>

  <xs:complexType name="address">
    <xs:sequence>
      <xs:element name="city" type="xs:string" minOccurs="0"/>
      <xs:element name="line1" type="xs:string" minOccurs="0"/>
      <xs:element name="line2" type="xs:string" minOccurs="0"/>
      <xs:element name="state" type="xs:string" minOccurs="0"/>
      <xs:element name="zipcode" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

我的是这样的:

<?xml version="1.0"?>
<!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "http://www.ncbi.nlm.nih.gov/dtd/NCBI_BlastOutput.dtd">
<BlastOutput>
  <BlastOutput_program>blastp</BlastOutput_program>
  <BlastOutput_version>BLASTP 2.2.28+</BlastOutput_version>
  <BlastOutput_reference>Stephen F. Altschul, Thomas L. Madden, Alejandro A. Sch&amp;auml;ffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), &quot;Gapped BLAST and PSI-BLAST: a new generation of protein database search programs&quot;, Nucleic Acids Res. 25:3389-3402.</BlastOutput_reference>
  <BlastOutput_db>nr</BlastOutput_db>
  <BlastOutput_query-ID>59663</BlastOutput_query-ID>
  <BlastOutput_query-def>unnamed protein product</BlastOutput_query-def>
  <BlastOutput_query-len>59</BlastOutput_query-len>
  <BlastOutput_param>
    <Parameters>
      <Parameters_matrix>BLOSUM62</Parameters_matrix>
      <Parameters_expect>10</Parameters_expect>
      <Parameters_gap-open>11</Parameters_gap-open>
      <Parameters_gap-extend>1</Parameters_gap-extend>
      <Parameters_filter>F</Parameters_filter>
    </Parameters>
  </BlastOutput_param>
<BlastOutput_iterations>
<Iteration>
  <Iteration_iter-num>1</Iteration_iter-num>
  <Iteration_query-ID>59663</Iteration_query-ID>
  <Iteration_query-def>unnamed protein product</Iteration_query-def>
  <Iteration_query-len>59</Iteration_query-len>
<Iteration_hits>
<Hit>
  <Hit_num>1</Hit_num>
  <Hit_id>gi|28592|emb|CAA23754.1|</Hit_id>
  <Hit_def>serum albumin [Homo sapiens]</Hit_def>
  <Hit_accession>CAA23754</Hit_accession>
  <Hit_len>609</Hit_len>
  <Hit_hsps>
    <Hsp>
      <Hsp_num>1</Hsp_num>
      <Hsp_bit-score>126.716</Hsp_bit-score>
      <Hsp_score>317</Hsp_score>
      <Hsp_evalue>2.38539e-38</Hsp_evalue>
      <Hsp_query-from>1</Hsp_query-from>
      <Hsp_query-to>59</Hsp_query-to>
      <Hsp_hit-from>1</Hsp_hit-from>

等等...

我该怎么办? 我最初试图用它来解析 balst xml 文件,为此我需要它。

最佳答案

XJC 用于从 XSD 文件(XML 架构)而非 XML 创建 JAVA 类。如果您想填充使用 XJC 生成的 java 类的对象,那么您可以考虑使用 JAXB。

JAXB 是一种 XML 到 Java 的绑定(bind)技术,它支持模式和 Java 对象之间以及 XML 实例文档和 Java 对象实例之间的转换。 JAXB 技术由运行时 API 和可简化对 XML 文档访问的附带工具组成。您可以使用 JAXB API 和工具在 Java 类和 XML 模式之间建立映射。 XML 模式定义了 XML 文档的数据元素和结构。 JAXB 技术提供了一个运行时环境,使您能够将 XML 文档与 Java 对象相互转换。存储在 XML 文档中的数据无需了解 XML 数据结构即可访问。

关于java - 为什么 JAXB 的 xjc 的 XML 文件输入与我的不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17712566/

相关文章:

java - 如何在 AuthenticationSuccessHandler 中检索 session 范围的 bean?

XMLUnit 比较 Xml 忽略序列

java - 解码空 xml 元素 jaxb

java - JAXB/xjc 生成的异常类不可抛出

java - 无法使用 AWS CodeDeploy 部署 Springboot 应用程序 AWS Ubuntu 实例

java - 为什么文件 ("c:"的 isDirectory 为 true )?

c# - Encog 中的多类 SVM 分类

java - 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http ://www. springframework.org/schema/mvc

android - Gradle,xml 中不支持的类型

java - JAXB、抽象类和多模块项目