ошибка parseKml () - PullRequest
       30

ошибка parseKml ()

0 голосов
/ 22 марта 2012

Я заметил, что функция parseKml () неправильно анализирует файл KML. Например, если у вас есть этот бит KML:

<ExtendedData>
  <Data name="Offer">
    <value>Apples</value>
    <value>Potatoes</value>
    <value>Tomatoes</value>
  </Data>
</ExtendedData>

Функция parseKml () вернет объект kmlObject, который будет содержать только последнее значение, то есть «Помидоры»:

У кого-нибудь есть решение для этого?

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Структура для типа расширенных данных, которые вы используете, предназначена для пар имя / значение.то есть одно имя с одним значением.

<ExtendedData>                       
  <Data name="string">
    <displayName>...</displayName>    <!-- string -->
    <value>...</value>                <!-- string -->
  </Data>
</ExtendedData>  

Так что то, что вы пытаетесь, не будет работать.Если вы хотите добавить произвольную структуру XML-данных в KML-функцию, вы должны сделать это следующим образом.

<ExtendedData xmlns:offer="http://yourserver.com/namespace">
  <offer:item>Apples</offer:item>
  <offer:item>Potatoes</offer:item>
  <offer:item>Tomatoes</offer:item>
</ExtendedData>

На основе структуры данных файл XML-схемы «предложения» (http://yourserver.com/namespace) будетчто-то вроде.

<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="item" type="xsd:string" />
</xsd:schema>
0 голосов
/ 23 марта 2012

Я считаю, что элемент <Data> может содержать только один <value> - согласно документам, элемент "<Data> позволяет добавлять нетипизированные пары имя / значение в пользовательские данные, связанные с данной функцией".

Таким образом, в вашем случае он выбирает только последний элемент <value>. Вы можете найти другой способ добавить свои пользовательские данные здесь: https://developers.google.com/kml/documentation/extendeddata

...