java - JAXB 中的 XML 解析问题

标签 java jaxb

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

`

 <?xml version="1.0" encoding="utf-8"?>
    <ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
      <string>CMSDocs</string>
      <string>CRMIncomingDocs</string>
      <string>CRMOutgoingDocs</string>
      <string>Customized Reports</string>
      <string>scripts</string>
      <string>Site Assets</string>
      <string>Site Pages</string>
      <string>Style Library</string>
    </ArrayOfString> 

`

我在错误之后收到错误。

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 一样工作

`

<?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 限定。包注释放置在一个名为 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 - JAXB 中的 XML 解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10118948/

相关文章:

java - 如何使用 selenium webdriver 处理 amazon.in 上的自动完成建议?

java - 测试表达式中的 XSLT 2.0 析取

jaxb - Moxy 正在编码未映射的 java 属性

java - Jaxb 应该编码内部类吗?

java - Spring/Jaxb2Marshaller/MOXy 不加载 package-info.java 命名空间映射

java - 如何在 JSTL 中检查对象是 String 还是 Collection?

java - 如何在包含表格查看器的另一个组合的顶部显示组合?

java - 使用 Jersey 和 Jaxb 自定义 Json 输出

Java 7 标准 WatchEventKind.ENTRY CREATE 文件写入完成

java - 根据标签解析XML到具体的子类