使用 xmlstarlet 编辑 HTML 中特定节点的 XPath 语法

XPath syntax to edit specific node in HTML using xmlstarlet

假设我有一个如下所示的 HTML 文档:

mypage.html

<html xmlns="http://www.w3.org/1999/xhtml">
  <body>
    <table>
      <tbody>
       ...
       <tr>
         <td id="MY_ID">123</td>

如何编辑设置为 MY_ID 的元素?当它只是文档中的 table 时,我已经成功地使用了以下命令,但是将它放在更大的文档中会破坏它:

xmlstarlet ed --update '//td[@id="MY_ID"]' --value '456' mypage.html

您的 td 元素需要关闭 (</td>) 才能有效 XML。 您可以尝试以下操作 here :

<html xmlns="http://www.w3.org/1999/xhtml">
  <body>
    <table>
      <tbody>
       ...
       <tr>
         <td id="MY_ID">123</td>
         <td> id="NOTMYID">127</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

用你自己的表达方式: //td[@id="MY_ID