在我的终端(linux / mac)上我用这个:
@Test
fun verifyNamesOfAddedItems () {
val getAllElementsNames = arrayOf(materials.text, element2.text,
element3.text...)
val correctElementsNames = arrayOf("name1", "name2", "name3"...)
val areArraysEqual = getAllElementsNames contentEquals correctElementsNames
if (!areArraysEqual) {
assert(false)
} else {
assert(true)
}
}
在Windows(powershell)上,我真的不知道如何修复此命令。我知道我需要使用$而不是@(因为powershell说使用$而不是@),但是包含有问题:
xmlstarlet ed -N ns=http://www.w3.org/2006/04/ttaf1 -d //ns:div[not(contains(@xml:lang,'Italian'))] "C:\Users\1H144708H\Downloads\a.mul.ttml" > "C:\Users\1H144708H\Downloads\a.mul.ttml.conv"
我甚至试过这个:
./xml.exe ed -N ns=http://www.w3.org/2006/04/ttaf1 -d //ns:div[not(contains($xml:lang,'Italian'))] "C:\Users\1H144708H\Downloads\a.mul.ttml" > "C:\Users\1H144708H\Downloads\a.mul.ttml.conv"
但我得到了#34;未能加载外部实体"错误""
答案 0 :(得分:2)
System.Management.Automation
是一个XPath表达式,其中包含一些特殊于各种shell的字符,因此您应该用引号保护它。使用双引号可以在bash,Powershell和cmd.exe中使用:
//ns:div[not(contains(@xml:lang,'Italian'))]
使用bash或Powershell时,最好使用单引号;对于那些shell,这需要防止xmlstarlet ed -N ns=http://www.w3.org/2006/04/ttaf1 -d "//ns:div[not(contains(@xml:lang,'Italian'))]" "C:\Users\1H144708H\Downloads\a.mul.ttml" > "C:\Users\1H144708H\Downloads\a.mul.ttml.conv"
的扩展(尽管在XPath中使用它是相当先进的):
$
请注意,内部引号也需要交换。