長年に渡ってXMLスキーマを扱っていないので、XMLスパイで生成されたスキーマでXMLを手動でアンマーシャリングする際に問題が発生しています。JAXBの非整列スキーマの問題: 'org.xml.sax.SAXParseException cvc-elt.1'
私の人生のために、他のさまざまなgoogle'd質問/同様のilkの反応にもかかわらず、私はそれを解決できません!
ここではXML(大幅にだけ問題を強調するために減少)です:
<myelement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="./myxsd.xsd">
</myelement>
はここmyxsd.xsdスキーマ(大幅にだけ問題を強調するために減少した)です:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://myhost.com/Elements" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" targetNamespace="http://myhost.com/Elements" elementFormDefault="qualified" attributeFormDefault="unqualified" vc:minVersion="1.1">
<xs:element name="myelement"/>
</xs:schema>
がここにコードがあります:
String xml = ""; //input the XML from above.
JAXBContext context =
JAXBContext.newInstance(MyElement.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
document = (MyElement) unmarshaller.unmarshal(new StringReader(xml));
と要素POJO:
で結果の@XmlRootElement(name = "myelement", namespace = "http://myhost.com/Elements")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "myelementType", namespace = "http://myhost.com/Elements")
public class MyElement {
}
:
javax.xml.bind.UnmarshalException - with linked exception:[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 110; cvc-elt.1: Cannot find the declaration of element ‘myelement’.]
XMLは実際のコードに含まれていますか?ファイルをunmarhsal()に送るだけの理由はありませんか? – milez
これは単なるコード例ですが、XMLは渡されても同じエラーが発生します。でもありがとう。 – deanpullen