Я пытаюсь использовать xmlbeans для анализа xml-ответов геокодера Google.
У меня есть xsd, который определяет подмножество KML, возвращаемое геокодером.
Для справки приведупример ответа геокодера:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Response>
<name>520 3rd Street San Francisco CA</name>
<Status>
<code>200</code>
<request>geocode</request>
</Status>
<Placemark id="p1">
<address>520 3rd St, San Francisco, CA 94107, USA</address>
<AddressDetails Accuracy="8" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
<Country>
<CountryNameCode>US</CountryNameCode>
<CountryName>USA</CountryName>
<AdministrativeArea>
<AdministrativeAreaName>CA</AdministrativeAreaName>
<SubAdministrativeArea>
<SubAdministrativeAreaName>San Francisco</SubAdministrativeAreaName>
<Locality>
<LocalityName>San Francisco</LocalityName>
<Thoroughfare>
<ThoroughfareName>520 3rd St</ThoroughfareName>
</Thoroughfare>
<PostalCode>
<PostalCodeNumber>94107</PostalCodeNumber>
</PostalCode>
</Locality>
</SubAdministrativeArea>
</AdministrativeArea>
</Country>
</AddressDetails>
<ExtendedData>
<LatLonBox north="37.7842288" south="37.7779335" east="-122.3924109" west="-122.3987062" />
</ExtendedData>
<Point>
<coordinates>-122.3955669,37.7810746,0</coordinates>
</Point>
</Placemark>
</Response>
</kml>
У меня есть 2 вопроса:
В моем xsd, поскольку я хочу атрибут Accuracy , я определяю AddressDetails как:
<?xml version="1.0" encoding="UTF-8"?>
<complexType name="placemark">
<sequence>
<element name="address" type="string" />
<element name="AddressDetails" type="ggc:addressDetails"/>
<element name="ExtendedData" type="ggc:extendedData" />
<element name="Point" type="ggc:point" />
</sequence>
</complexType>
<complexType name="addressDetails">
<sequence>
<element name="Country" type="string"/>
</sequence>
<attribute name="Accuracy" type="ggc:accuracy"/>
</complexType>
Но когда я вызываю placemark.getAddressDetails () для сгенерированного кода, он возвращает ноль.Я думаю, что это из-за атрибута xmlns в элементе AddressDetails?но я не уверен (другие получатели возвращают то, что я ожидаю).Что я могу с этим поделать?
Во-вторых, в моем xsd я должен определить пространство имен как http://earth.google.com/kml/2.0, чтобы соответствовать тому, что возвращает Google, хотя мой xsd явно не настоящий xsd,Есть ли способ переопределить обработку заголовка в xmlbeans, чтобы пространство имен по умолчанию могло выглядеть примерно так: http://foo/baa?