3

我正在尝试使用 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

4 回答 4

3

Google 的 XPath 实现存在缺陷,它不能正确识别大写字符。将谓词“characterID”更改为“characterid”,它工作正常。

此外,importXML 经常无缘无故地出错。去年我已经发送了几十个报告,但仍然没有修复。

保持勇敢。7o

于 2014-10-28T20:55:17.170 回答
2

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

于 2014-10-01T00:18:38.857 回答
0

我对此进行了一些快速测试,我发现只要 XPath 表达式中有字符串“ID”,谷歌就会引发内部错误。

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

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

你可以在这里查看我的测试。

于 2014-04-24T11:04:04.413 回答
0

我对这些“导入内部错误”消息有很多问题。它在以前运行良好的单元格上随机变化。我唯一能猜到的是这是谷歌的问题。我还没有找到答案:(只是由于使用 1 个 importXML 语句的本质,并将其拖到 166 行,有一些工作,有一些没有,随机时间告诉我它是谷歌。如何随机性它有时适用于所有列,其他时候是 1/2 列,其他时候只有几列,很明显这不是语句。

于 2014-04-24T00:20:29.327 回答