Xml 具有多个属性的节点的Xpath
尝试将所有属性值用单引号括起来:Xml 具有多个属性的节点的Xpath,xml,xpath,xmlstarlet,Xml,Xpath,Xmlstarlet,尝试将所有属性值用单引号括起来: xmlstarlet ed --omit-decl -L -u "/project[@xmlns=http://maven.apache.org/POM/4.0.0 and @xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance and @xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4
xmlstarlet ed --omit-decl -L -u "/project[@xmlns=http://maven.apache.org/POM/4.0.0 and @xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance and @xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd]/version" -v 10.10.10 ./file.xml
xmlns
属性是定义。不带冒号的名称空间定义默认名称空间。XPath不支持默认名称空间,因此必须显式引用它。XMLStarlet(1.5.0+)的最新版本将默认名称空间绑定到“3;”,因此可以执行以下操作:
"/project[@xmlns='http://maven.apache.org/POM/4.0.0' and @xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' and @xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd']/version"
您可以像这样显式绑定名称空间:
xmlstarlet ed --omit-decl -L -u "/_:project/_:version" -v 10.10.10 ./file.xml
另见
xmlstarlet ed --omit-decl -L -u "/_:project/_:version" -v 10.10.10 ./file.xml
xmlstarlet ed -N pom=http://maven.apache.org/POM/4.0.0 --omit-decl -L -u "/pom:project/pom:version" -v 10.10.10 ./file.xml