gpt4 book ai didi

xml - Powershell:如何使用xpath同时按属性和内容进行过滤?

转载 作者:行者123 更新时间:2023-12-03 17:12:42 24 4
gpt4 key购买 nike

我有这个脚本:

function f3
{
[xml]$xml = @"
<?xml version="1.0" encoding="utf-8"?>
<Book>
<projects>
<project name="Book1" date="2009-01-20">
<editions>
<edition language="English">Novel_1</edition>
<edition language="English">my.Book1.com</edition>
<edition language="German">Ge.Book1.Com</edition>
<edition language="French">Fr.Book1.com</edition>
<edition language="Polish">Pl.Book1.com</edition>
<edition language="English">Novel_2</edition>
<edition language="English">FairyTale</edition>
</editions>
</project>
</projects>
</Book>
"@

$xml.SelectNodes("/Book/projects/editions")
}
f3

我希望选择“language=English”,内容包含“Novel”或等于“FairyTale”,所以我的预期输出是:

Novel_1
Novel_2
FairyTale

那么如何更改我的“SelectNodes”语句呢?非常感谢!

最佳答案

在 xpath 中,您可以使用标准 bool 运算符(如 orand)组合多个 bool 值:

/Book/*/*/*/edition[@language='English' and (.='FairyTale' or contains(.,'Novel'))]

或者,将操作数分成两个谓词([]):

/Book/*/*/*/edition[@language='English'][.='FairyTale' or contains(.,'Novel')]

对于这种情况,您可能还需要考虑使用 starts-with() 函数而不是 contains() 以更加精确。

旁注:* 只是我缩短 xpath 表达式以适应一行而不必降低效率的方法(例如使用 ///Book//edition),您可以使用实际的元素名称代替 *

关于xml - Powershell:如何使用xpath同时按属性和内容进行过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30771184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com