• Login
Community
  • Login

Merge same parameters in XML file

Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
2 Posts 2 Posters 2.2k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P
    Petr Andreev
    last edited by May 12, 2017, 7:40 AM

    Hi

    How I can make from this data
    <param name=“Product”>Multifunction valves</param>
    <param name=“Coolant”>R113</param>
    <param name=“Coolant”>R114</param>
    <param name=“Coolant”>R1233zd(E)</param>
    <param name=“Coolant”>R1234yf</param>
    <param name=“Coolant”>R1234ze(E)</param>
    <param name=“Coolant”>R125</param>
    <param name=“Coolant”>R1270</param>
    <param name=“Coolant”>R1336mzz(Z)</param>
    <param name=“Coolant”>R134a</param>
    <param name=“Coolant”>R152a</param>
    <param name=“Coolant”>R170</param>
    <param name=“Coolant”>R22</param>

    like this
    <param name=“Product”>Multifunction valves</param>
    <param name=“Coolant”>R113; R114; R1233zd(E); R1234yf; R1234ze(E); R125; R1270; R1336mzz(Z); R134a; R152a; R170; R22</param>

    1 Reply Last reply Reply Quote 0
    • G
      guy038
      last edited by guy038 May 12, 2017, 7:50 PM May 12, 2017, 1:51 PM

      Hello, @petr-andreev,

      No problem with regular expressions !

      Here are the few steps to do :

      • Go back at the very beginning of your document ( Ctrl + Origin )

      • Open the Replace dialog ( Ctrl + H )

      • SEARCH (?-is)</param>\R<param name="Coolant">|^(.+Product.+?);\x20

      • REPLACE (?1\1</param>\r\n<param name="Coolant">:;\x20)

      • UNcheck the Wrap around option, if necessary

      • Select the Regular expression search mode

      • Click TWICE, on the REplace All button

      Et voilà !

      At first sight, you may think that these regexes are complicated, But I tried to give some information on them, in the Notes section, below !


      So, from your original text, below :

      <param name="Product">Multifunction valves</param>
      <param name="Coolant">R113</param>
      <param name="Coolant">R114</param>
      <param name="Coolant">R1233zd(E)</param>
      <param name="Coolant">R1234yf</param>
      <param name="Coolant">R1234ze(E)</param>
      <param name="Coolant">R125</param>
      <param name="Coolant">R1270</param>
      <param name="Coolant">R1336mzz(Z)</param>
      <param name="Coolant">R134a</param>
      <param name="Coolant">R152a</param>
      <param name="Coolant">R170</param>
      <param name="Coolant">R22</param>
      

      You get, after TWO clicks on the Replace All button, your wanted text, below ;-))

      <param name="Product">Multifunction valves</param>
      <param name="Coolant">R113; R114; R1233zd(E); R1234yf; R1234ze(E); R125; R1270; R1336mzz(Z); R134a; R152a; R170; R22</param>
      

      Notes,

      • The modifiers (?-is) forces a sensitive way of search and the special dot character will match a single standard character, only !

      • Then, due to the alternative symbol ( | ), the regex engine looks for, either :

        • Case A The string </param>, followed by End of Line character(s) and ending with the string <param name=“Coolant”> ( part </param>\R<param name="Coolant"> )

        • Case B The string, located between a beginning of line and the first semicolon ;, containing the string Product ( part ^(.+Product.+?); ), followed by a space character ( part \x20 )

      • In replacement, it rewrites, either :

        • Case A A semicolon, followed by a space character ( part ;\x20 ), which is the ELSE part of the conditional replacement, located after the colon symbol :

        • Case B The group 1 ( The string from beginning of line, till a semicolon character, excluded, containing the string Product ( part \1 ), followed by the string </param>, a line break and the string <param name=“Coolant”> ( part </param>\r\n<param name="Coolant"> )
          It is the THEN part of the conditional replacement, located between the (?1 syntax and the colon symbol :


      Remarks :

      • Case A occurs first, because there’s no semicolon symbol ( ; ), in your original text !

      • Of course, in these regexes, you may change the tags Product and Coolant, as you like to :-)

      Best Regards,

      guy038

      1 Reply Last reply Reply Quote 1
      1 out of 2
      • First post
        1/2
        Last post
      The Community of users of the Notepad++ text editor.
      Powered by NodeBB | Contributors