多年以来,由于没有处理过XML模式,因此在使用XML Spy中生成的模式手动解组某些XML时遇到了问题。JAXB unmarshalling模式问题:'org.xml.sax.SAXParseException cvc-elt.1'
对于我的生活,我无法解决它,尽管各种其他谷歌类似的问题/答案!
下面是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