【发布时间】:2021-01-28 07:17:52
【问题描述】:
我正在尝试用存储在 MyFile 中的新值替换 xml 文件中的密码值,有人可以告诉我如何实现这一点。谢谢
我的文件=test123
<Resource accessToUnderlyingConnectionAllowed="true" auth="Container" driverClassName="com.ibm.db2.jcc.DB2Driver" factory="com..tomcat.jndi.JSCommonsBasicDataSourceFactory" maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/server" password="myPassword"/>
执行以下命令后出现以下错误,请指教。
xmlstarlet ed --omit-decl --inplace \ --update '//Resource/@password' --value "testingfile" \ /apps/META-INF/context.xml
未能加载外部实体“--update”
xmlstarlet ed --omit-decl --inplace --update '//Resource/@password' --value 'testingfile' /apps/META-INF/context.xml
/apps/META-INF/context.xml:26.119: AttValue: " or ' 预期 maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/server" 密码= ^ /apps/META-INF/context.xml:26.119:属性构造错误 maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/server" 密码= ^ /apps/META-INF/context.xml:26.119:找不到开始标记资源第 26 行的结尾 maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/server" 密码= ^
【问题讨论】:
-
1.有效的xml在开
<后不能有空格; 2.不能用大引号,用纯双引号。 -
Don't Parse XML/HTML With Regex. 我建议使用 XML/HTML 解析器 (xmlstarlet, xmllint ...)。