Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
命名空间:javax.xml.bind.UnmarshaleException:意外元素_Java_Xml_Exception_Jaxb_Kml - Fatal编程技术网

命名空间:javax.xml.bind.UnmarshaleException:意外元素

命名空间:javax.xml.bind.UnmarshaleException:意外元素,java,xml,exception,jaxb,kml,Java,Xml,Exception,Jaxb,Kml,出于某些原因,我必须手动解析KML文件,如下所示: <?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Document> ... <Placemark> <Point><coordinates>13.38705,52.52715,0</coo

出于某些原因,我必须手动解析KML文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
    <Document>
        ...
       <Placemark>
           <Point><coordinates>13.38705,52.52715,0</coordinates></Point>
          <Name>My name</Name>
          <description xmlns="">Hallo World</description>
       </Placemark>
   </Document>
</kml>
我的问题是无法识别xml
名称空间
属性

如果我更改注释

 @XmlRootElement(name = "kml", namespace = "http://www.opengis.net/kml/2.2")

并从我的KML文件的头中删除名称空间,那么解析工作就不会有任何问题

我的问题是如何在不删除名称空间的情况下处理这个问题


请注意,description标记还有一个名称空间。

由于XML文档利用了默认名称空间,因此应该使用包级别的
@XmlSchema
注释来映射名称空间限定。
@XmlSchema
注释被添加到名为
package info
的特殊类中,该类与域模型位于同一个包中,并包含以下内容。指定了
@XmlSchema
后,您将不需要指定任何其他名称空间信息

package info.java

@XmlSchema(
    namespace = "http://www.opengis.net/kml/2.2",
    elementFormDefault = XmlNsForm.QUALIFIED)
package example;

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

您可以在我的博客上阅读更多关于JAXB和名称空间的信息:


注意:我已经阅读了SO上所有关于此问题或类似问题的帖子,但没有一条建议有效。谢谢,我注意到
没有问题。我已经添加了
@xmlement(name=“description”,namespace=”“)
注释,它正在工作。再次感谢!
 @XmlRootElement(name = "kml", namespace = "http://www.opengis.net/kml/2.2")
 @XmlRootElement(name = "kml")
@XmlSchema(
    namespace = "http://www.opengis.net/kml/2.2",
    elementFormDefault = XmlNsForm.QUALIFIED)
package example;

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