Java JAXB中的Xml解析问题

Java JAXB中的Xml解析问题,java,jaxb,Java,Jaxb,我正在尝试解析来自第三方url的xml流。在我的控制台中,它看起来像 ` 但它使用的是类似XML的XML ` Kshitij-1 Kshitij-2 Kshitij-3 Kshitij-4 Kshitij-5 ` 谢谢您可以使用@XmlSchema注释来指定名称空间限定。包注释放置在名为Package info的特殊类上,该类必须与域类位于同一个包中。下面是一个适用于您的用例的示例 套餐信息 @XmlSchema( namespace = "http://tempuri.org/"

我正在尝试解析来自第三方url的xml流。在我的控制台中,它看起来像

`

但它使用的是类似XML的XML

`


Kshitij-1
Kshitij-2
Kshitij-3
Kshitij-4
Kshitij-5
`


谢谢

您可以使用
@XmlSchema
注释来指定名称空间限定。包注释放置在名为
Package info
的特殊类上,该类必须与域类位于同一个包中。下面是一个适用于您的用例的示例

套餐信息

@XmlSchema( 
    namespace = "http://tempuri.org/", 
    elementFormDefault = XmlNsForm.QUALIFIED) 
package example;

import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
了解更多信息


您试图将其解析为什么模式(java类或类似的模式)…这是java类@XmlRootElement(name=“ArrayOfString”)@XmlAccessorType(XmlAccessType.FIELD)公共类ArrayOfString{@XmlElement(name=“string”)ArrayList stringList=new ArrayList();public ArrayList getStringList(){return stringList;}public void setStringList(ArrayList stringList){this.stringList=stringList;}}这两段XML由于第一段中的xmlns命名空间而完全不同。以下哪项是正确的?最后一项是正确的。Kshitij-1 Kshitij-2 Kshitij-3 Kshitij-4 Kshitij-5第一个文件的根元素没有多大意义。有两个ns前缀声明(xsd和xsi),但它们没有在任何地方使用。通常需要xsi来指定模式位置,需要xsd来指定元素类型,但这里没有所有这些内容。好的,这是可行的,但我认为值得解释一下原因。第一个文档(来自源代码)具有一个模式名称空间,该名称空间限定了文档,并且(如@davidfrancis所述)使其不同于没有名称空间的最后一个文档。JAXB是模式名称空间敏感的,因此类可能与文档具有“兼容结构”,但JAXB依赖于上面给出的正确注释将其与预期名称空间正确关联。总之,为了使用JAXB,理解xml模式名称空间至关重要。
Exception in thread "main" javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException: Premature end of file.]
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:315)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:481)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:199)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:168)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:184)
    at com.cms.webservice.converter.BaseMarshaller.convertToObject(BaseMarshaller.java:41)
    at com.cms.webservice.converter.BaseMarshaller.main(BaseMarshaller.java:90)
Caused by: org.xml.sax.SAXParseException: Premature end of file.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
    at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1411)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1058)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:195)
    ... 5 more
Java Result: 1
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ArrayOfString>
    <string>Kshitij-1</string>
    <string>Kshitij-2</string>
    <string>Kshitij-3</string>
    <string>Kshitij-4</string>
    <string>Kshitij-5</string>
</ArrayOfString>
@XmlSchema( 
    namespace = "http://tempuri.org/", 
    elementFormDefault = XmlNsForm.QUALIFIED) 
package example;

import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;