suggestXPath似乎有效但Google电子表格只是提供了#34;导入内部错误"

时间:2014-04-23 07:00:47

标签: xml xpath google-sheets api-eveonline

@name具有特定值时,我尝试使用Google电子表格从<row>元素返回@characterID属性。

Google电子表格会发出&#34;导入内部错误&#34;尝试使用以下内容时:

=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 个答案:

答案 0 :(得分:3)

Google对XPath的实施存在缺陷,因为它无法正确识别大写字符。将谓词“characterID”更改为“characterid”,它可以正常工作。

此外,importXML经常因为没有明显的原因而出错。我去年发了几十份报告,仍然无法修复。

保持勇敢。 70

答案 1 :(得分:2)

我发现的最佳解决方法是将工作表复制到新工作表。出于某种原因,它会继续工作一段时间,直到它开始出现问题为止。如果你有办法编辑使用过的公式但得到相同的结果,那么它可以使用

答案 2 :(得分:0)

我对这些&#34;导入内部错误&#34;有很多问题。消息。它在以前工作正常的细胞上随机变化。我唯一可以猜到的是它是一个谷歌问题。我还没有找到它的答案:(仅仅是使用1个importXML语句的本质,并将其拖动166行,有一些工作,有些不是,随机时间,告诉我它的's'&#39; s谷歌。它在所有列上的工作方式有时是偶然的,其他时候是列的1/2,而在其他时间只有几列,很明显它不是声明。

答案 3 :(得分:0)

我做了一些快速测试,我发现只要XPath表达式中存在字符串'ID',谷歌就会抛出内部错误。

我使用以下XPath解决了您的问题:

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

您可以查看我的测试here