Ошибки! Любые предложения о моем выбранном XPath используется?
Я использую HANA Cloud Integration для создания потока интеграции (iFlow). Тем не менее, любой, кто имеет опыт работы с XML, потенциально может мне помочь.
Я построил очень простой процесс интеграции, который общается с API openweathermap, получает данные о погоде, а затем отправляет конкретные данные по электронной почте. Это XML, с которым я работаю ниже:
<current>
<city id="5913490" name="Calgary">
<coord lon="-114.09" lat="51.05"/>
<country>CA</country>
<sun rise="2016-02-22T14:34:54" set="2016-02-23T01:05:30"/>
</city>
<temperature value="262.098" min="262.098" max="262.098" unit="kelvin"/>
<humidity value="79" unit="%"/>
<pressure value="865.62" unit="hPa"/>
<wind>
<speed value="1.32" name="Calm"/>
<gusts/>
<direction value="262.002" code="W" name="West"/>
</wind>
<clouds value="0" name="clear sky"/>
<visibility/>
<precipitation mode="no"/>
<weather number="800" value="clear sky" icon="01n"/>
<lastupdate value="2016-02-22T14:12:31"/>
</current>
Для этого weather
элемент в current
корневой элемент должен быть извлечен и value
поле будет использовано. Это формируется строкой XPath /current/weather/@value
Последнее поле обновления также необходимо будет передать следующему процессу в интеграции и может быть извлечено таким же образом.
Я создал два свойства заголовка, которые называются строками currentConditions
а также currentReport
и они указывают на атрибуты XPath /current/weather/@value
а также /current/lastupdate/@value
, В XPath @
относится к атрибуту, а не к элементу. Также не забудьте сделать эти значения заголовка, чтобы они могли быть переданы внешним вызовам службы. Если они являются свойствами, они не будут отправлены внешним процессам. Тем не менее, я получаю эту ошибку:
org.apache.camel.builder.xml.InvalidXPathExpression: Неверный xpath: /current/weather/@value. Причина: javax.xml.xpath.XPathExpressionException: сбой при преобразовании узла класса javax.xml.transform.sax.SAXSource: org.xml.sax.SAXParseException; номер строки: 1; номер столбца: 1; Содержимое недопустимо в прологе. Причина: javax.xml.xpath.XPathExpressionException: сбой при преобразовании узла класса javax.xml.transform.sax.SAXSource: org.xml.sax.SAXParseException; номер строки: 1; номер столбца: 1; Содержание не доступно в прологе.
Какие-либо предложения?
1 ответ
Ваше выражение XPath в порядке. Основная причина ошибки, которую вы видите в этом вложенном исключении:
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
Кажется, что данные, которые вы извлекаете из API openweathermap, не являются правильно сформированным XML. Это часто происходит, если REST-API отправляет ответ об ошибке. Сначала вы должны убедиться, что запрос API успешно возвращается и содержит правильно сформированный XML.