Xmlstarlet 在更新 xml 时使用 --inplace 选项

标签 xml xmlstarlet

我正在尝试使用 --inplace 全局选项更新一个 xml 标签,如下所示

 xml ed  --inplace -N x="http://java.sun.com/xml/ns/j2ee" -u "//x:web-app/x:filter/x:init-param/x:param-value" -v "/cuadmin/showRecovery.do" WEB-INF/web.xml 

上面是给我错误

**I/O warning : failed to load external entity "x=http%3A//java.sun.com/xml/ns/j2ee"**

我试图修改的 xml 如下所示:-

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <filter>
    <filter-name>recoveryRedirectFilter</filter-name>
    <filter-class>ClassName</filter-class>
    <init-param>
      <param-name>somename</param-name>
      <param-value>Someurl.do</param-value>
    </init-param>
  </filter>
</web-app>

最佳答案

--inplace 选项仅在 1.0.2 中添加

xml ed -N x="http://java.sun.com/xml/ns/j2ee" -u "//x:web-app/x:filter/x:init-param/x:param-value" -v "/cuadmin/showRecovery.do" WEB-INF/web.xml > WEB-INF/tmp-web.xml
mv WEB-INF/tmp-web.xml WEB-INF/web.xml

关于Xmlstarlet 在更新 xml 时使用 --inplace 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18013861/

相关文章:

xml - 如何检查元素是否存在并选择元素值的子字符串

java - 如何通过URL访问XML文件

javascript - XSL 中的空元素 - 嵌套问题

xmlstarlet - 使用 xmstarlet 从 maven pom.xml 中找到特定的 groupId

xmlstarlet 解析器错误 : Entity '*' not defined

xml - 在plist文件中,如何通过xmlstarlet工具提取唯一键标记后的字符串文本

xml - Powershell System.Xml.XmlElement 但我使用 System.Xml.XmlDocument?

c# - XML 序列化 - .NET 4.0 中的不同结果

xmlstarlet 更新一个属性

xml - 使用 xmlstarlet 更改 xml 属性