我有一个xml文档,如下所示:
<Time>
<ID>22653948</ID>
<Job>
<ID>J000010</ID>
<Name>NEP0001_Evesham</Name>
</Job>
<Task>
<ID>12379652</ID>
<Name>Assemble</Name>
</Task>
<Staff>
<ID>68684</ID>
<Name>Ruiardh Robinson</Name>
</Staff>
<Date>2012-10-29T00:00:00</Date>
<Minutes>180</Minutes>
<Note/>
<Billable>true</Billable>
</Time>
该文档包含多个<Time>
条目,我正在尝试执行的操作是导入每个任务的所有<Date>
和<Minutes>
字段,仅限日期包含字符串“2014 ”。我可以使用以下方式导入2014年的所有日期字段:
=QUERY(ImportXML('Time Data'!F2, "//Time/Date"), "SELECT * WHERE Col1 contains '2014-04'")
但是我无法获得相同条目的相应分钟字段,我知道您可以使用|
运算符执行多个xpath查询,我尝试了以下但是它不起作用,因为它只返回由于某种原因,第一个条目的第一个日期字段。
=QUERY(ImportXML('Time Data'!F2, "//Time/Date | //Time/Minutes"), "SELECT * WHERE Col1 contains '2014-04'")
有人知道如何只在日期包含“2014”的情况下导入两列吗?
答案 0 :(得分:3)
您可以使用:
//Time/*[self::Date or self::Minutes]
然而谷歌读取XML的方式,这将填充行而不是列,所以如果您在A1中有查询,结果将是
A B C ...
1 2012-10-29T00:00:00
2 180
因此,如果您希望将其放在列中,则可以在B1中添加使用//Time/Minutes
的第二个ImportXML查询
然而,我只是在另一个工作表中导入整个XML,然后查询它。
顺便说一句,你也可以使用//Time[starts-with(Date, '2014')]
而不是在QUERY中包装ImportXML