我创建了一个 xsd,并将其与 jaxb 插件(如波纹管)一起使用:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.mycompany.fr/Canonical/Schema/invoices.xsd"
targetNamespace="http://www.mycompany.fr/Canonical/Schema/invoices.xsd"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="invoices">
<xs:complexType>
<xs:sequence>
<xs:element name="invoice" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="invoice-type" type="xs:string"/>
<xs:element minOccurs="0" name="insertion-date" type="xs:dateTime"/>
<xs:element minOccurs="0" name="amount" type="xs:double"/>
</xs:sequence>
<xs:attribute name="invoice-number" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
插件:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<id>xsd-to-java</id>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<packageName>com.mycompany.model</packageName>
<sources>
<source>src/main/resources/xsd/invoices.xsd</source>
</sources>
</configuration>
</plugin>
它给我生成了这样的类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"invoice"
})
@XmlRootElement(name = "invoices")
public class Invoices {
protected List<Invoice> invoice;
/**
* Gets the value of the invoice property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the invoice property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getInvoice().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link Invoice }
*
*
*/
public List<Invoice> getInvoice() {
if (invoice == null) {
invoice = new ArrayList<Invoice>();
}
return this.invoice;
}
/**
* <p>Classe Java pour anonymous complex type.
*
* <p>Le fragment de schéma suivant indique le contenu attendu figurant dans cette classe.
*
* <pre>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="invoice-type" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="insertion-date" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
* <element name="amount" type="{http://www.w3.org/2001/XMLSchema}double" minOccurs="0"/>
* </sequence>
* <attribute name="invoice-number" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"invoiceType",
"insertionDate",
"amount"
})
public static class Invoice {
@XmlElement(name = "invoice-type")
protected String invoiceType;
@XmlElement(name = "insertion-date")
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar insertionDate;
protected Double amount;
@XmlAttribute(name = "invoice-number", required = true)
protected String invoiceNumber;
/**
* Obtient la valeur de la propriété invoiceType.
*
* @return
* possible object is
* {@link String }
*
*/
public String getInvoiceType() {
return invoiceType;
}
/**
* Définit la valeur de la propriété invoiceType.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setInvoiceType(String value) {
this.invoiceType = value;
}
/**
* Obtient la valeur de la propriété insertionDate.
*
* @return
* possible object is
* {@link XMLGregorianCalendar }
*
*/
public XMLGregorianCalendar getInsertionDate() {
return insertionDate;
}
/**
* Définit la valeur de la propriété insertionDate.
*
* @param value
* allowed object is
* {@link XMLGregorianCalendar }
*
*/
public void setInsertionDate(XMLGregorianCalendar value) {
this.insertionDate = value;
}
/**
* Obtient la valeur de la propriété amount.
*
* @return
* possible object is
* {@link Double }
*
*/
public Double getAmount() {
return amount;
}
/**
* Définit la valeur de la propriété amount.
*
* @param value
* allowed object is
* {@link Double }
*
*/
public void setAmount(Double value) {
this.amount = value;
}
/**
* Obtient la valeur de la propriété invoiceNumber.
*
* @return
* possible object is
* {@link String }
*
*/
public String getInvoiceNumber() {
return invoiceNumber;
}
/**
* Définit la valeur de la propriété invoiceNumber.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setInvoiceNumber(String value) {
this.invoiceNumber = value;
}
}
}
我使用这个Camel路径来取消xml的共享:
JaxbDataFormat jaxbDataFormat = new JaxbDataFormat();
jaxbDataFormat.setSchema("classpath:xsd/invoices.xsd");
from("file:{{xml.location}}?delay=1000")
.log("Reading invoice XML data from ${header.CamelFileName}")
.unmarshal(jaxbDataFormat)
.split(body())
.to("direct:processedXml");
但是当我运行我的应用程序时,我得到了下面的错误...
[路线2][未封印1][未封印org.apache.camel.model.dataformat.JaxbDataFormat@7aff8796][ 0]
堆栈跟踪------------------------------------------------------------------------------------------------java.io。IO异常:javax.xml.bind.UnmarshalException
您知道问题吗?
非常感谢并致以最诚挚的问候
取消编组时,不需要引用模式,而需要引用 JAXB 上下文路径
。你必须告诉 JAXB 在哪里(=在哪些包中)找到带注释的 pojos,以便它能够将 xml 转换为相应的 java 对象。
所以试试这个:
JaxbDataFormat jaxbDataFormat = new JaxbDataFormat();
jaxbDataFormat.setContextPath("com.mycompany.model");
出于某种原因,字体已经停止在我的网站上呈现。字体存储在本地,与站点相同的服务器上。 例如,右上方的电话号码应该是Bebas字体,但它默认为影响。 在控制台中,我得到错误: 来源“http://www.cyclistinsuranceaustralia.com.au”的字体已被跨来源资源共享策略阻止加载:“Access-Control-Allow-Origin”标头的值“http://www.cyc
我正在使用reactjs构建一个前端唯一的基本天气应用程序。对于API请求,我使用Fetch API。在我的应用程序中,我从一个简单的API获取当前位置,它以JSON对象的形式给出了位置。但是当我通过获取API请求它时,我得到了这个错误。 所以我搜索并找到了多种解决方案来解决这个问题。 在Chrome启用CORS解决了这个错误,但是当我在heroku上部署应用程序时,我如何通过移动设备访问它,而不
我正在使用第三方API,从中我得到以下错误: CORS 策略已阻止从源“https://mydomain.xyz”访问位于“https://myapi/..”的 XMLHttpRequest:对预检请求的响应未通过访问控制检查:请求的资源上不存在“访问控制-允许源”标头。 我想知道如何在我的应用程序中启用CORS策略。我的. htAccess文件是: 我正在使用Laravel应用程序。提前感谢。
我有2个Kafka消费者共享相同的消费者组ID,但订阅不同的主题。它们中的每一个都只能从相应的主题中阅读。 当第一个使用者运行时,会从其订阅的主题中为其分配分区。当第二个使用者也运行时,使用者组会重新平衡(导致分配给第一个使用者的分区被撤销)。到目前为止,一切顺利。这与Kafka消费群体Id和消费者再平衡问题中的讨论一致。 但是,我开始在消费者1中看到TOPIC_AUTHORIZATION_FAI
我使用的是Selenium3.9.0+Geckodriver0.24+Firefox58.0.2。 当webdriver想要在我的目标站点上单击导航树中的元素时->script crashing with selenium异常:“selenium.Common.Exceptions.ElementClickInterceptedException:Message:element is not cl
我们在服务器和客户机模式下使用Ignite 2.7.6:两个服务器和六个客户机。 正如我们所看到的,现在所有服务器节点的CPU负载都很高,约为250%(更新前为20%),而长G1 Young Gen的停顿时间高达5毫秒(更新前为300微秒)。 服务器配置为: 在Ignite服务器节点的内存转储中,我们看到大量,大小为21MB