XPath: Find a node within a text node











up vote
1
down vote

favorite












I have the following html:



<code>The first code block</code>
<p>Some text and <code>the second code block</code> followed by other text</p>


I need to find and remove all code blocks from it. I use the following XPath '//code', but it finds only the first code block while the second remains.



Question: Why '//code' is not able to catch the second code block? How to fix it?



Details: I'm doing it in Ruby using Nokagiry. My code looks like this:



html = Nokogiri::HTML(File.read(htmlFile))
html.search('//code').remove


UPDATE:



The XPath worked in fact. I just made a mistake in different place.










share|improve this question




























    up vote
    1
    down vote

    favorite












    I have the following html:



    <code>The first code block</code>
    <p>Some text and <code>the second code block</code> followed by other text</p>


    I need to find and remove all code blocks from it. I use the following XPath '//code', but it finds only the first code block while the second remains.



    Question: Why '//code' is not able to catch the second code block? How to fix it?



    Details: I'm doing it in Ruby using Nokagiry. My code looks like this:



    html = Nokogiri::HTML(File.read(htmlFile))
    html.search('//code').remove


    UPDATE:



    The XPath worked in fact. I just made a mistake in different place.










    share|improve this question


























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      I have the following html:



      <code>The first code block</code>
      <p>Some text and <code>the second code block</code> followed by other text</p>


      I need to find and remove all code blocks from it. I use the following XPath '//code', but it finds only the first code block while the second remains.



      Question: Why '//code' is not able to catch the second code block? How to fix it?



      Details: I'm doing it in Ruby using Nokagiry. My code looks like this:



      html = Nokogiri::HTML(File.read(htmlFile))
      html.search('//code').remove


      UPDATE:



      The XPath worked in fact. I just made a mistake in different place.










      share|improve this question















      I have the following html:



      <code>The first code block</code>
      <p>Some text and <code>the second code block</code> followed by other text</p>


      I need to find and remove all code blocks from it. I use the following XPath '//code', but it finds only the first code block while the second remains.



      Question: Why '//code' is not able to catch the second code block? How to fix it?



      Details: I'm doing it in Ruby using Nokagiry. My code looks like this:



      html = Nokogiri::HTML(File.read(htmlFile))
      html.search('//code').remove


      UPDATE:



      The XPath worked in fact. I just made a mistake in different place.







      html ruby xml xpath






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 8 at 7:29

























      asked Nov 7 at 20:23









      Oleksandr Shpota

      3,33511429




      3,33511429
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          1
          down vote



          accepted










          Seems like You forget about iterator...

          Try:



          html = Nokogiri::HTML(File.read(htmlFile))
          html.search('//code').each{|htm| htm.remove}





          share|improve this answer

















          • 1




            Thank you. It turns out the the XPath I mentioned in the question worked, I had an error in different place. But your code also works.
            – Oleksandr Shpota
            Nov 8 at 7:30











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














           

          draft saved


          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53197257%2fxpath-find-a-node-within-a-text-node%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          1
          down vote



          accepted










          Seems like You forget about iterator...

          Try:



          html = Nokogiri::HTML(File.read(htmlFile))
          html.search('//code').each{|htm| htm.remove}





          share|improve this answer

















          • 1




            Thank you. It turns out the the XPath I mentioned in the question worked, I had an error in different place. But your code also works.
            – Oleksandr Shpota
            Nov 8 at 7:30















          up vote
          1
          down vote



          accepted










          Seems like You forget about iterator...

          Try:



          html = Nokogiri::HTML(File.read(htmlFile))
          html.search('//code').each{|htm| htm.remove}





          share|improve this answer

















          • 1




            Thank you. It turns out the the XPath I mentioned in the question worked, I had an error in different place. But your code also works.
            – Oleksandr Shpota
            Nov 8 at 7:30













          up vote
          1
          down vote



          accepted







          up vote
          1
          down vote



          accepted






          Seems like You forget about iterator...

          Try:



          html = Nokogiri::HTML(File.read(htmlFile))
          html.search('//code').each{|htm| htm.remove}





          share|improve this answer












          Seems like You forget about iterator...

          Try:



          html = Nokogiri::HTML(File.read(htmlFile))
          html.search('//code').each{|htm| htm.remove}






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 8 at 2:10









          Ivan Olshansky

          23217




          23217








          • 1




            Thank you. It turns out the the XPath I mentioned in the question worked, I had an error in different place. But your code also works.
            – Oleksandr Shpota
            Nov 8 at 7:30














          • 1




            Thank you. It turns out the the XPath I mentioned in the question worked, I had an error in different place. But your code also works.
            – Oleksandr Shpota
            Nov 8 at 7:30








          1




          1




          Thank you. It turns out the the XPath I mentioned in the question worked, I had an error in different place. But your code also works.
          – Oleksandr Shpota
          Nov 8 at 7:30




          Thank you. It turns out the the XPath I mentioned in the question worked, I had an error in different place. But your code also works.
          – Oleksandr Shpota
          Nov 8 at 7:30


















           

          draft saved


          draft discarded



















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53197257%2fxpath-find-a-node-within-a-text-node%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          Anylogic : not able to use stopDelay()