атрибуты xmlbeans и пространств имен - PullRequest
1 голос
/ 09 сентября 2010

Я пытаюсь использовать 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?

...