440·FILTERXML函数的参数
标签:
filterxml参数 |
分类: 字符处理问题 |
EXCEL有个函数FILTERXML,可以提取XML格式的内容,并且生成的结果是个数组。
这个特点,可以被我们利用来拆分有特定分隔符的文本。
公式的核心思想是,将分隔符换成。
再在字符串前面和后面连接两个标签,得到一个XML格式的字符串。
FILTERXML函数只有两个参数。
第一个参数,是一个XML格式的字符串。
我们经常能看到她的身影。
一般我们看到的,是按层级这样排版的。
是一个根元素标签。
是他的子元素标签。
是的子元素标签。
123是一对标签,中间的内容,就是这个标签的元素。
这些标签名,可以写成有特定意义的单词。
也可以随便起个名字,如。
但标签名对大小写敏感。与是不同的。
FILTERXML的作用就是将一对一对标签中间的内容提取出来。
怎么提取,要看她的第二个参数。这是一个XPATH格式的字符串。
XPATH有一定规则。
1、如“bookstore”和“/bookstore”意思是提取根元素标签中的所有内容。
"bookstore/book"就是提取根元素下的子元素中的所有内容。
因为根元素下,有两个子元素标签。
每个子元素标签里,都有一个元素。
所以提取的结果是一个含有两个元素的数组。
2、无论有多少层标签,也可以不管层级,直接提取某一标签内的元素。
XPATH字符串写成“//price”,意思便是不管标签在哪一层级,直接提取她所包裹的内容。
同理,"bookstore//price"的意思就是提取元素下的所有元素。而不论她们之间相隔几个层级。
3、标签里面,元素名称空格之后的部分,是这个元素名的属性。
如这个标签,title是元素名称,lang是其属性,而eng便是属性值。
FILTERXML也可以提取属性值。
比如,第二个参数XPATH写成“//@lang”是提取名为lang的所有属性值,而不论她所处的层级。
4、也可以为标签限定条件,这样的条件需放在一对中括号内。
如/bookstore/book[1],代表提取子元素的第一个元素。
/bookstore/book[last()],代表提取子元素的最后一个元素
/bookstore/book[last()-1],代表提取子元素的倒数第二个元素
/bookstore/book[position()<3],代表提取最前面的两个属于子元素的元素。
//title[@lang],代表提取所有拥有名为lang的属性的title元素。
//title[@lang='eng'],代表提取所有title元素,且拥有值为eng的lang属性。
/bookstore/book[price>35.00],提取bookstore下的book元素,但price元素值须大于35.00。
/bookstore/book[price>35.00]/title,提取bookstore下的book元素下的title元素,但book元素下的price元素值须大于35.00。
5、XPATH还可以使用通配符。
如/bookstore/*,代表提取bookstore元素的所有子元素。在本例中就是所有的book元素。因为title和price都已经是她的孙元素。
//*,代表提取所有元素,而不论她处在哪一层级。
//title[@*],代表提取所有带有属性的title元素。
6、最后,可以使用竖线运算符,使用若干XPAHT路径。
竖线运算符可以用CHAR(124)得到。
了解了XPATH参数的格式规则,想提取和重组字符串就变得简单很多。
================================================================
关注
学习
办公小知识


加载中…