¿Como obtener el texto plano de una cadena HTML de forma segura?

Necesito obtener el texto que se encuentra dentro de una cadena HTML la cual puede contener código malicioso, por lo cual necesito que el método no ejecute scripts, descargue recursos externos, etc.

Ejemplo de HTML:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css" style="display:none;"> P {margin-top: 0;margin-bottom: 0;}</style> <script>alert('Cuidado script!')</script> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> </head> <body dir="ltr">   <div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">     Buenos días Señor X.</div>   <div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">     Muchas gracias por el envió.</div>   <div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">     Cordialmente</div>   <div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">     Sr Y&nbsp;</div>   <div id="DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br>     <table style="border-top: 1px solid #D3D4DE;">       <tbody>         <tr>           <td style="width: 55px; padding-top: 18px;">             <a href="https://www.avast.com/sig-email?utm_medium=email&amp;utm_source=link&amp;utm_campaign=sig-email&amp;utm_content=webmail" target="_blank"><img onload="alert('Cuidado imagen!')" onerror="alert('Cuidado error!')" alt="" width="46" height="29" style="width: 46px; height: 29px;" src="https://ipmcdn.avast.com/images/icons/icon-envelope-tick-round-orange-animated-no-repeat-v1.gif"></a>           </td>           <td style="width: 470px; padding-top: 17px; color: #41424e; font-size: 13px; font-family: Arial, Helvetica, sans-serif; line-height: 18px;">             Libre de virus. <a href="https://www.avast.com/sig-email?utm_medium=email&amp;utm_source=link&amp;utm_campaign=sig-email&amp;utm_content=webmail" target="_blank" style="color: #4453ea;"> www.avast.com</a> </td>         </tr>       </tbody>     </table>     <a href="#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1"></a>   </div> </body> </html>

Resultado esperado:

  • No se debe ejecutar ningún script
  • No se deben descargar recurso externo (imágenes, estilos, etc)
  • El resultado debe ser el texto:

    Buenos días Señor X. Muchas gracias por el envió. Cordialmente Sr Y Libre de virus. www.avast.com 

Split de cadena con Regex manteniendo el delimitador

Tengo una cadena que me llega en JSON con unos datos como estos

{“name”:”AMD”,”history”:{“2019-09-05”:{“open”:”31.79″,”close”:”31.50″,”high”:”32.05″,”low”:”31.12″,”volume”:”57693493″},”2019-09-04″:{“open”:”31.32″,”close”:”30.95″,”high”:”31.83″,”low”:”30.85″,”volume”:”46709780″},”2019-09-03″:{“open”:”30.83″,”close”:”30.90″,”high”:”31.14″,”low”:”30.68″,”volume”:”38080254″}, … etc

usando

 string[] cotizacion = Regex.Split(cadena_url, @"\d{4}\-\d{2}\-\d{2}"); 

Me genera correctamente un elemento en el array cotizacion por cada dia, el problema es que el split elimina la fecha y a mi me interesa que se mantenga la fecha y la añada al array.

No consigo añadir la fecha al array.

Muchas gracias por la ayuda.

Capturar texto de una cadena esplícita y no sólo un fragmento

Con la siguiente cadena en un documento html, ‘este verano vamos a la playa a mi vera’ necesito capturar la palabra ‘vera’ y estoy usando el siguiente código:

var text = 'vera'; var modulo = '<pre>' + text + '</pre>'; $  (pagesText).html(function () {       return $  (this).html().replace(text, modulo);  }); 

Sucede que, me añade dos tags pre, uno en el trozo de la palabra ‘verano’ en unos 4 primeras letras y el que únicamente quiero que es ‘vera’.

Cómo capturo sólo la palabra ‘vera’ y no ‘verano’ aunque contenga esos 4 primeros caracteres?

Al utilizar las funciones de JMeter 8 __urldecode y __unescapeHtml, en los parámetros para enviar en un HTTP Request, no se decodifica la cadena

Configuración

Se captura el valor utilizando “Regular Expression Extractor” Se obtiene cBneYo0pq6d+8Nt0DW3rVgfby4kFLHTou+tZmq4rYXCzC5QcwtenxuvKjj9sjpogsSzk0lA2kd+gElhXBVFU8w==

Pero al enviar el parámetro se pasa de esta manera authenticity_token= cBneYo0pq6d+8Nt0DW3rVgfby4kFLHTou+tZmq4rYXCzC5QcwtenxuvKjj9sjpogsSzk0lA2kd+gElhXBVFU8w%3D%3D

He utilizado:

$ {__unescapeHtml($ {authenticity_token})} $ {__unescapeHtml($ {authenticity_token})} -> application/x-www-form-urlencoded $ {__urldecode(vQxnNOQHsRkYt9Bk8u1uKWEDj83eN1cm654hYqPuK42rExD5cPEGEPmvW95dzdKWCJfgzUpf9AAEvtCQlMlcMt==)} -> application/x-www-form-urlencoded — UTF-8 $ {__urldecode(“vQxnNOQHsRkYt9Bk8u1uKWEDj83eN1cm654hYqPuK42rExD5cPEGEPmvW95dzdKWCJfgzUpf9AAEvtCQlMlcMt==”)} -> application/x-www-form-urlencoded

Cadena de texto con sucesión

Realizo un programa en java que permita genrar esta sucesión con una cadena de la siguiente manera:

Input:

hola mundo

como estan

cadena con sucesión:

hOLA mUndO

cOmO eStAn

Trate de realizarlo trasformando el input String a un array tipo string con un split, para luego con un if, ir checando las posiciones pares, y trasformando dicha letra que se encuentre en dicha posición a minusculas, y con las posiciones impares, lo mismo, solo que conviertiendo a mayusculas… El problema esta en que el array tambien guarda los espacios en blanco, lo cual causa un desfase en la sucesión, y no se lo puedo quitar, ya que debo mostrar el texto con el formato del inputtext, que puedo hacer para cumplir la sucesión, sin alterar los espacios y saltos de linea que este posee?

les dejo una captura para que se aprecesie mejor el problema: introducir la descripción de la imagen aquí

actualmente el programa devuelve:

hOlA MuNdO

cOmO EsTaN

mi codigo:

public String cambiar(String cadena1) {     cambiar= cadena1.split("");      for(int i=0; i<cambiar.length; i++)     {         if(i%2==0)         {             cambiar[i]=cambiar[i].toLowerCase();         }         else         {             cambiar[i]=cambiar[i].toUpperCase();         }     }      for(int i=0; i<cambiar.length; i++)     {         textocambiado+=cambiar[i];      }      return textocambiado; } 

NOTA: no se me permite usar arraylist

Sustituir cadena #tag con cadena de un objeto

¿Como puedo cambiar #card10 “VerBoton10” y el indice 10 en “onClickHecho(10)” por valores del objeto?

Soy capaz de hacerlo en los textos de los div pero no en los lugares que indico.

Gracias por atención.

Se puede ver el ejemplo en ejemplo

 <div *ngFor="let item of cards; let indice=index"     [style.background]="'#9999'"     [style.border]="'1px solid red'"   >     <div class="card">       <div #card10 class="overlay">         <div>{{cards[indice].name}}</div>         <br />         <div>{{ cards[indice].id}}</div>         <br />         <button  *ngIf="verBoton10"              (click)="onClickHecho(10)"         >           Hecho         </button>       </div>     </div>   </div>

import { Component } from '@angular/core';  @Component({   selector: 'my-app',   templateUrl: './app.component.html',   styleUrls: [ './app.component.css' ] }) export class AppComponent  {   cards = [     {name: '#card10', id: '10', boton: 'verBoton10'},     {name: '#card11', id: '11', boton: 'verBoton11'},     {name: '#card12', id: '12', boton: 'verBoton12'},     {name: '#card12', id: '13', boton: 'verBoton13'},     {name: '#card12', id: '14', boton: 'verBoton14'} ];   name = 'Angular';   verBoton10 = true; }

¿Como convertir cadena con formato JSON a cadena con formato XML?

Nesecito convertir un objeto JSON a una cadena con Formato XML , Como puedo hacer esto?

Intente con este codigo pero no me esta funcionado, me devuelve un error que dice que nesecito un path para leer el archivo Xml, ademas creo que estoy creando es un archivo xml y en realidad lo que nesecito es la cadena con formato XML.

 private XmlDocument XmlCreate(string cadena)         {             XmlDocument doc = new XmlDocument();             XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null);             try             {                 doc.PreserveWhitespace = true;                 XmlElement root = doc.DocumentElement;                 doc.InsertBefore(xmlDeclaration, root);                 doc = JsonConvert.DeserializeXmlNode(cadena);             }catch (Exception ex)             {                 string n = ex.ToString();             }             return doc;         } 

Reemplazar una parte de la cadena sin magia

Tengo el siguiente código:

text = `intro  check this regex<placeholder>, it will do what you want  outro`;  result = text.replace('<placeholder>', ' `^sql$  `');  console.log(result);

Como pueden ver, el resultado es

intro  check this regex `^sqlintro  check this regex, it will do what you want  outro 

Cuando esperaría que sea

intro  check this regex `^sql$  `, it will do what you want  outro 

Por qué pasa esto? y… cómo puedo arreglarlo?