FILTERXML函数教程



FILTERXML函数是Excel中用于从XML数据中提取特定信息的函数。它使用XPath表达式来查询XML结构并返回匹配的数据。

一、函数语法

=FILTERXML(xml, xpath)

  • xml:包含有效XML格式的文本字符串或单元格引用
  • xpath:标准的XPath表达式,用于指定要提取的数据位置

二、基本使用示例

示例1:提取简单XML数据

假设A1单元格中有以下XML内容:

<data>
  <name>张三</name>
  <age>28</age>
  <department>销售部</department>
</data>
公式结果说明
=FILTERXML(A1, "//name")张三提取name节点的值
=FILTERXML(A1, "//age")28提取age节点的值
=FILTERXML(A1, "//department")销售部提取department节点的值

示例2:提取多个相同节点

假设A2单元格中有以下XML内容:

<employees>
  <employee>李明</employee>
  <employee>王芳</employee>
  <employee>刘伟</employee>
</employees>
公式结果说明
=FILTERXML(A2, "//employee[1]")李明提取第一个employee节点
=FILTERXML(A2, "//employee[2]")王芳提取第二个employee节点
=FILTERXML(A2, "//employee[3]")刘伟提取第三个employee节点

三、XPath表达式常用语法

XPath表达式说明示例
//node选择所有名为node的节点//name
/root/node选择root下的node子节点/data/name
node[@attribute]选择带有attribute属性的node节点//item[@id]
node[@attribute='value']选择attribute属性值为value的node节点//person[@id='101']
node[position()]按位置选择节点//employee[1]
*选择所有节点//data/*

四、实际应用案例

案例1:从Web API返回的XML中提取数据

使用WEBSERVICE函数获取XML数据,再用FILTERXML解析:

=FILTERXML(
  WEBSERVICE("http://api.example.com/data.xml"),
  "//temperature"
)

案例2:解析嵌套XML结构

假设有以下XML数据:

<company>
  <department name="技术部">
    <employee>陈工</employee>
    <employee>李工</employee>
  </department>
  <department name="市场部">
    <employee>张经理</employee>
  </department>
</company>
公式结果说明
=FILTERXML(A3, "//department[@name='技术部']/employee[1]")陈工提取技术部第一个员工
=FILTERXML(A3, "//department[2]/employee")张经理提取第二个部门的员工
=FILTERXML(A3, "//department/@name")技术部提取第一个部门的名称属性

五、注意事项

  1. XML必须是格式良好的(标签闭合、结构正确)
  2. 如果XPath没有匹配到任何节点,函数返回#VALUE!错误
  3. 使用WEBSERVICE函数获取网络XML数据时,需要Excel支持Web查询
  4. FILTERXML是Excel 2013及以上版本才支持的函数

六、常见错误处理

错误类型可能原因解决方法
#VALUE!XML格式不正确或XPath无匹配检查XML格式和XPath表达式
#NAME?Excel版本不支持FILTERXML升级到Excel 2013或更高版本
空结果XPath路径错误使用更简单的XPath测试

七、综合练习

尝试解析以下XML数据:

<books>
  <book category="小说">
    <title>活着</title>
    <author>余华</author>
    <price>39.00</price>
  </book>
  <book category="科技">
    <title>Python编程</title>
    <author>John Doe</author>
    <price>89.00</price>
  </book>
</books>

练习公式:

  1. 提取第一本书的标题:=FILTERXML(A4, "//book[1]/title")
  2. 提取科技类书籍的作者:=FILTERXML(A4, "//book[@category='科技']/author")
  3. 提取所有书籍价格:=FILTERXML(A4, "//book[2]/price")(第二本)

❤️收藏 👍点赞

用户评论

发表评论

您还未登录,无法发表评论!
快来留下你的足迹吧~