Рекомендация XPath кажется верной, но электронная таблица Google просто выдает "импортировать внутреннюю ошибку"

Я пытаюсь использовать таблицу Google, чтобы вернуть @name атрибут из <row> элемент, когда @characterID имеет определенную ценность.

Электронная таблица Google выдает "импортировать внутреннюю ошибку" при попытке использовать следующее:

=IMPORTXML(CONCATENATE("http://api.eveonline.com/account/Characters.xml.aspx?keyID=",Summary!$B$10,"&vCode=",Summary!$B$11),"//eveapi/result/rowset/row[contains(@characterID,'94492798')]/@name")

Функция concatenate предоставляет действующий URL, а http://www.freeformatter.com/xpath-tester.html дает мне именно то, что я хочу, когда я использую

/eveapi/result/rowset/row[contains(@characterID,'94492798')]/@name

Любые варианты тоже не работают. например //row[@characterID='94492798']/@name

Любые идеи, как я могу заставить это работать?

Редактировать: к вашему сведению, это не похоже на предикат. Без предиката он возвращает все 3 строки с ожидаемым атрибутом @name, но не тем, чего я хочу достичь.

Редактировать: по рекомендации dirkk, вот соответствующий XML:

<?xml version='1.0' encoding='UTF-8'?>
<eveapi version="2">
<currentTime>2014-04-23 16:33:25</currentTime>
<result>
<rowset name="characters" key="characterID" columns="name,characterID,corporationName,corporationID,allianceID,allianceName,factionID,factionName">
<row name="Tor Norman" characterID="94488288" corporationName="Brave Newbies Inc." corporationID="98169165" allianceID="99003214" allianceName="Brave Collective" factionID="0" factionName="" />
<row name="Tor Dodi" characterID="94492798" corporationName="University of Caille" corporationID="1000115" allianceID="0" allianceName="" factionID="0" factionName="" />
<row name="Tor Jita" characterID="94506820" corporationName="School of Applied Knowledge" corporationID="1000044" allianceID="0" allianceName="" factionID="0" factionName="" />
</rowset>
</result>
<cachedUntil>2014-04-23 17:28:22</cachedUntil>
</eveapi>

4 ответа

Реализация XPath в Google имеет недостатки, поскольку она не распознает заглавные буквы должным образом. Измените предикат "CharacterID" на "CharacterID", и он работает нормально.

Кроме того, importXML часто выдает ошибки без видимой причины. Я отправил десятки отчетов за последний год, но до сих пор не могу исправить.

Оставайся Храбрым. 7о

Лучший способ обойти это - скопировать лист на новый лист. По некоторым причинам это продолжает работать некоторое время, пока это не начинает глючить также. Альтернатива, если у вас есть способ отредактировать использованную формулу, но получить тот же результат, тогда это работает некоторое время

У меня было много проблем с этими сообщениями "импортировать внутреннюю ошибку". Он меняется случайным образом на клетках, которые раньше работали нормально. Единственное, что я могу догадаться, это то, что это проблема Google. Я еще не нашел ответа на него:(По самой природе использования 1 оператора importXML и перетаскивания его вниз на 166 строк, когда есть какая-то работа, а какая-то нет, в случайное время говорит мне, что это Google. Случайность в том, как иногда он работает на всех столбцах, в других случаях - на 1/2 столбцов, а в других случаях - только на несколько столбцов. Ясно, что это НЕ утверждение.

Я провел небольшое быстрое тестирование с этим, и обнаружил, что как только в выражении XPath есть строка "ID", Google выдает внутреннюю ошибку.

Я обошел вашу проблему, используя следующий XPath:

//row[@*[contains(name(),'character')]='94488288']/@name

Вы можете проверить мои тесты здесь.

Другие вопросы по тегам