私は JAXB と RestEasy を使用しています。
Comprobante.class (JAXB 生成クラス) を xml ファイルから返す必要があります。
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd">...</cfdi:Comprobante>
私はパッケージ宣言でこれを持っています:
@XmlSchema(
location = "http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd",
namespace = "http://www.sat.gob.mx/cfd/3",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED,
xmlns={
@XmlNs(
prefix="cfdi",
namespaceURI="http://www.sat.gob.mx/cfd/3"
),
@XmlNs(
prefix="xsi",
namespaceURI="http://www.w3.org/2001/XMLSchema-instance"
)
})
しかし、XML ファイルから JAXB クラスへのアンマーシャリングの結果には、次のものがありません。
xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd"
印刷するだけです
<cfdi:Comprobante
xmlns:cfdi="http://www.sat.gob.mx/cfd/3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">..</cfdi:Comprobante>
私のコードは次のとおりです。
File p = new File(servletContext.getRealPath("/")+factura.getXml().getCfdi());
JAXBContext context = JAXBContext.newInstance("foo.bar.Model.CFDIv32");
Unmarshaller u = context.createUnmarshaller();
return (foo.bar.Comprobante) u.unmarshal(p);
xsi:schemaLocation="" プロパティを配置するように JAXB Unmarshaller に指示するにはどうすればよいですか。
ありがとうございました。
編集:どのように解決したか
私自身の答えを見てください