命名空间:javax.xml.bind.UnmarshaleException:意外元素
出于某些原因,我必须手动解析KML文件,如下所示:命名空间: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
<?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和名称空间的信息:
没有问题。我已经添加了@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;