Рекомендация 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
Вы можете проверить мои тесты здесь.