Java 如何使用Geotools编写GML解析器?

Java 如何使用Geotools编写GML解析器?,java,geotools,gml-geographic-markup-lan,Java,Geotools,Gml Geographic Markup Lan,我使用geotools 8.4从OS Mastermap为GML文件编写了一个解析器。有一部分我还是有问题。这把xsd的剪子: <complexType name="RoadLinkType"> <complexContent> <extension base="osgb:AbstractFeatureType"> <sequence> <element name

我使用geotools 8.4从OS Mastermap为GML文件编写了一个解析器。有一部分我还是有问题。这把xsd的剪子:

<complexType name="RoadLinkType">
    <complexContent>
        <extension base="osgb:AbstractFeatureType">
            <sequence>
                <element name="polyline" type="gml:GeometryPropertyType"/>
                <element name="directedNode" type="osgb:directedNodeAssociationType" minOccurs="2" maxOccurs="2"/>
            </sequence>
        </extension>
    </complexContent>
</complexType>
以及输出:

id: osgb4000000023204016
polyline: LINESTRING (516609 257678, 516615 257733, 516618 257786)
directedNode: '{orientation=-, href=#osgb4000000027916595}' class java.util.HashMap

我做错了什么?为什么我不能同时获得directedNode?如何绑定到真正的Java对象?

在您调用的循环中
Object dnode=feature.getAttribute(“directNode”)。如的文档中所述,调用将只返回一个节点,即列表中的第一个或最后一个节点,文档没有说明。如果要检索所有节点,应调用。虽然您需要自己检查姓名,但这会解决您的问题


虽然已经过了相当长的一段时间,但它可能仍然与读者相关

我还把它贴在了gis.stackexchange上,因为我不知道它更适合哪里:谢谢你的努力(尽管我不再需要它了)。欢迎你。您希望我将答案也发布在GIS Stackexchange网站上,还是希望链接到此网站,编写您自己的答案?您可以这样做。你应该为此获得声誉;)
GML gml = new GML(Version.GML3);
CRSAuthorityFactory crsFac = ReferencingFactoryFinder.getCRSAuthorityFactory("EPSG", null);
CoordinateReferenceSystem osgbCrs = crsFac.createCoordinateReferenceSystem("EPSG:27700");
gml.setCoordinateReferenceSystem(osgbCrs);
SimpleFeatureIterator iter = gml.decodeFeatureIterator(in);
while (iter.hasNext())
{
    SimpleFeature feature = iter.next();
    System.out.println("id: " + feature.getID());
    System.out.println("polyline: " + feature.getAttribute("polyline"));
    Object dnode = feature.getAttribute("directedNode");
    System.out.println("directedNode: '" + dnode + "'\t" + dnode.getClass());
}
id: osgb4000000023204016
polyline: LINESTRING (516609 257678, 516615 257733, 516618 257786)
directedNode: '{orientation=-, href=#osgb4000000027916595}' class java.util.HashMap