加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

440·FILTERXML函数的参数

(2021-01-31 16:26:37)
标签:

filterxml

参数

分类: 字符处理问题

EXCEL有个函数FILTERXML,可以提取XML格式的内容,并且生成的结果是个数组。

440·FILTERXML函数的参数

这个特点,可以被我们利用来拆分有特定分隔符的文本。

440·FILTERXML函数的参数

公式的核心思想是,将分隔符换成。

再在字符串前面和后面连接两个标签,得到一个XML格式的字符串。

FILTERXML函数只有两个参数。

第一个参数,是一个XML格式的字符串。

我们经常能看到她的身影。

440·FILTERXML函数的参数

一般我们看到的,是按层级这样排版的。

是一个根元素标签。

是他的子元素标签。

是的子元素标签。

123是一对标签,中间的内容,就是这个标签的元素。

这些标签名,可以写成有特定意义的单词。

也可以随便起个名字,如。

但标签名对大小写敏感。是不同的。

FILTERXML的作用就是将一对一对标签中间的内容提取出来。

怎么提取,要看她的第二个参数。这是一个XPATH格式的字符串。

XPATH有一定规则。

1、如“bookstore”和“/bookstore”意思是提取根元素标签中的所有内容。

440·FILTERXML函数的参数

"bookstore/book"就是提取根元素下的子元素中的所有内容。

440·FILTERXML函数的参数

因为根元素下,有两个子元素标签。

每个子元素标签里,都有一个元素。

所以提取的结果是一个含有两个元素的数组。

 

2、无论有多少层标签,也可以不管层级,直接提取某一标签内的元素。

XPATH字符串写成“//price”,意思便是不管标签在哪一层级,直接提取她所包裹的内容。

440·FILTERXML函数的参数

同理,"bookstore//price"的意思就是提取元素下的所有元素。而不论她们之间相隔几个层级。

 

3、标签里面,元素名称空格之后的部分,是这个元素名的属性。

如这个标签,title是元素名称,lang是其属性,而eng便是属性值。

FILTERXML也可以提取属性值。

比如,第二个参数XPATH写成“//@lang”是提取名为lang的所有属性值,而不论她所处的层级。

440·FILTERXML函数的参数

4、也可以为标签限定条件,这样的条件需放在一对中括号内。

/bookstore/book[1],代表提取子元素的第一个元素。

/bookstore/book[last()],代表提取子元素的最后一个元素

/bookstore/book[last()-1],代表提取子元素的倒数第二个元素

/bookstore/book[position()<3],代表提取最前面的两个属于子元素的元素。

//title[@lang],代表提取所有拥有名为lang的属性的title元素。

//title[@lang='eng'],代表提取所有title元素,且拥有值为englang属性。

/bookstore/book[price>35.00],提取bookstore下的book元素,但price元素值须大于35.00

/bookstore/book[price>35.00]/title,提取bookstore下的book元素下的title元素,但book元素下的price元素值须大于35.00

440·FILTERXML函数的参数

5XPATH还可以使用通配符。

/bookstore/*,代表提取bookstore元素的所有子元素。在本例中就是所有的book元素。因为titleprice都已经是她的孙元素。

//*,代表提取所有元素,而不论她处在哪一层级。

//title[@*],代表提取所有带有属性的title元素。

440·FILTERXML函数的参数

6、最后,可以使用竖线运算符,使用若干XPAHT路径。

440·FILTERXML函数的参数

竖线运算符可以用CHAR(124)得到。

了解了XPATH参数的格式规则,想提取和重组字符串就变得简单很多。

================================================================

关注  法叔office

学习 办公小知识 

440·FILTERXML函数的参数

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有