xml提要由根提要元素组成:
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
<g:title>Example Feed</g:title> ...
和子条目。 feed的每个元素以及条目均以'g:'命名空间作为前缀:
<xs:schema targetNamespace="http://www.w3.org/2005/Atom"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="feed" type="atom:feedType" xmlns:atom="http://www.w3.org/2005/Atom" />
<xs:complexType name="entryType">
<xs:sequence>
<xs:element name="id" type="xs:string"/>
我使用xjc生成了xsd,但是所有元素都带有'xs:'。
我只是尝试通过以下方式解组xml:
JAXBContext jc = JAXBContext.newInstance("com.example.productfeed.generated");
Unmarshaller unmarshaller = jc.createUnmarshaller();
URL url = new URL("the url");
InputStream xml = url.openStream();
JAXBElement<FeedType> feed = unmarshaller.unmarshal(new StreamSource(xml), FeedType.class);
对象层次结构是正确的FeedType,其中包含EntryType数组,但feed和entry的所有属性均为空。我想它必须与g:和xs:命名空间有关,但不知道如何解决它。