Find and replace specific word between more tags
-
Hello,
Im using notepad ++ and i dont know how to do find+replace operationI have this kind of string
<Item UPC=“1234”><Pictures><Picture Resolution=“1024” ID=“1”>somepicture.gif</Picture></Pictures><IsVisible>True</IsVisible></Item>
And i want to change <IsVisible>True</IsVisible> to <IsVisible>False</IsVisible>
Can you please help me? How can i do this?
Thanks a lot!
-
@plidos said in Find and replace specific word between more tags:
Sorry correct string is
<Item UPC=“1234”><Pictures><Picture Resolution=“1024” ID=“1”>somepicture.gif</Picture><moretags>…</moretags></Pictures><IsVisible>True</IsVisible><moretags>…</moretags></Item>
Thanks!
-
@plidos said in Find and replace specific word between more tags:
<IsVisible>True</IsVisible> to <IsVisible>False</IsVisible>
The obvious answer to your question would be to use
find what:<IsVisible>True</IsVisible>
replace with:<IsVisible>False</IsVisible> -
@Ekopalypse
yes this is simple but in that file i have over maybe 200 tags starting with<Item UPC=“(random numbers)”>so i need to change ```
<IsVisible>True</IsVisible><Item UPC=“1234”>. It is identified by <Item UPC=“1234”> So for example i need to change <IsVisible>True</IsVisible> to <IsVisible>False</IsVisible> only for tag <Item UPC="1234"> (not for 1235)<Item UPC=“1234”><Pictures><Picture Resolution=“1024” ID=“1”>somepicture.gif</Picture><moretags>…</moretags></Pictures><IsVisible>True</IsVisible><moretags>…</moretags></Item>
Thanks -
Probably the most simplistic approach would do it:
Search for
(<Item UPC=“1234”>.*?<IsVisible>)False(</IsVisible>.*?</Item>)
and replace with\1True\2
using Regular Expression search mode.There are more complicated ways which are more rigorous, but perhaps we don’t need to go there…
-
You could install the XML Tools plugin and use its XSLT Transformation feature.
- Open Plugins Admin and install XML Tools plugin.
- After Notepad++ has been restarted paste the XSLT code from below to an empty tab and save it for example as
ChangeVisible.xsl. - Open the XML file you want to process.
- Go to
(menu) Plugins -> XML Tools -> XSLT Transformation. - In the dialog popping up click on the ellipsis button and in the file selector dialog popping up select the XSL file you created in step 2.
- In the
optionsfield of the dialog typeUPCid='1234'. - Click the
Transformbutton. - A new document will be opened with your changes applied. Save it to the original file.
To change the value of the
IsVisiblenode of more than oneItemnodes, repeat steps 6 to 8.The XSLT code. Please note: In line 19 (
<xsl:template match="/RootNode/Item/IsVisible">) you have to provide the complete path to theIsVisibleXML node, starting from the document’s root node.<?xml version="1.0" encoding="UTF-8"?> <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" omit-xml-declaration="no" indent="yes" /> <xsl:param name="UPCid"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="/RootNode/Item/IsVisible"> <xsl:choose> <xsl:when test="../@UPC=$UPCid"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:text>False</xsl:text> </xsl:copy> </xsl:when> <xsl:otherwise> <xsl:copy> <xsl:copy-of select="@*|node()"/> </xsl:copy> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:transform>
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login