【问题标题】:Xmlstarlet using --inplace option in updating xmlXmlstarlet 在更新 xml 时使用 --inplace 选项
【发布时间】:2013-08-02 09:49:40
【问题描述】:

我正在尝试使用 --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>

【问题讨论】:

  • 我的 xmlstarlet 版本是 1.0.1 。这是我无法使用就地选项的原因吗?
  • 也许尝试把-N x=...放在第一位?我认为在早期版本中命名空间选项解析存在一些问题。
  • 不提供命名空间.... xmlstarlet 无法正确搜索

标签: xml xmlstarlet


【解决方案1】:

--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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多