Supposing I have an HTML document like what’s below:
mypage.html
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<table>
<tbody>
...
<tr>
<td id="MY_ID">123</td>
How would I edit the element set to MY_ID? I’ve used the following command successfully when it was just the table in a document, but placing it in a larger document broke it:
xmlstarlet ed --update '//td[@id="MY_ID"]' --value '456' mypage.html
Advertisement
Answer
Your td element needs to be closed (</td>) for it to be valid XML.
You can try the following it 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>
Using your own expression:
//td[@id="MY_ID