当前元素文本中双大写文本的 XPath 不是子元素
XPath for double caps text in current element text not child
这件事看似简单,实则复杂。
我的XML如下:
<authors>
<au>
<fnm>XXY</fnm> MArio</au>
<au>
<fnm>Xxy</fnm> MArio</au>
<au>
<fnm>XXy</fnm> Mario</au>
</authors>
我的条件是
- 需要在 fnm 标签
中找到带有双大写字母但不包含的 <au>
标签
基于以上 XML 文件前两个作者标签 au
应该可以找到,但不能找到第三个 au
我试过XPath代码
//au[text()][matches(.,'[A-Z][A-Z]')]
但它不起作用。
我想你想要 //au[text()[matches(., '[A-Z]{2}')]]
.
可能是你想要的 (+1),但万一你真的
- Need to find tag with double caps but not with in
fnm
tag
然后使用这个 XPath:
//*[not(self::fnm) and text()[matches(., '[A-Z]{2}')]]
...编辑您的问题后,我看到一个隐藏的 <au>
标签:
- Need to find
<au>
tag with double caps but not with in fnm
tag
我为您解决了这个问题。 (您必须使用 `<au>`
来转义标记并使其可见。)所以,显然您确实想要 Martin 发布的内容。
这件事看似简单,实则复杂。
我的XML如下:
<authors>
<au>
<fnm>XXY</fnm> MArio</au>
<au>
<fnm>Xxy</fnm> MArio</au>
<au>
<fnm>XXy</fnm> Mario</au>
</authors>
我的条件是
- 需要在 fnm 标签 中找到带有双大写字母但不包含的
<au>
标签
基于以上 XML 文件前两个作者标签 au
应该可以找到,但不能找到第三个 au
我试过XPath代码
//au[text()][matches(.,'[A-Z][A-Z]')]
但它不起作用。
我想你想要 //au[text()[matches(., '[A-Z]{2}')]]
.
- Need to find tag with double caps but not with in
fnm
tag
然后使用这个 XPath:
//*[not(self::fnm) and text()[matches(., '[A-Z]{2}')]]
...编辑您的问题后,我看到一个隐藏的 <au>
标签:
- Need to find
<au>
tag with double caps but not with infnm
tag
我为您解决了这个问题。 (您必须使用 `<au>`
来转义标记并使其可见。)所以,显然您确实想要 Martin 发布的内容。