HTML processado incorretamente em .NET
-
22-07-2019 - |
Pergunta
Eu estou tentando tirar a string "<BR>
" em VB.NET e convertê-lo em HTML através de XSLT. Quando o HTML vem de fora, no entanto, parece que isso:
<BR>
Eu só posso assumir que vai em frente e tenta torná-lo. Existe alguma maneira eu posso converter os </>
de volta para os suportes assim que eu conseguir a quebra de linha Eu estou tentando para?
Solução
Verifique a XSLT tem:
<xsl:output method="html"/>
edit: explicação de comentários
Por saídas XSLT padrão como XML (1) o que significa que vai escapar quaisquer caracteres significativos. Você pode substituir esse em casos específicos com a disable-output-escaping="yes"
atributo (intro aqui ), mas muito mais poderoso é alterar a saída para o valor explícito de HTML que confia mesmo benefício a nível mundial, como o seguinte:
- Para script e estilo elementos, substitua todos os caracteres de escape (tais como & e>) com seus valores reais (& E>, respectivamente).
- Para atributos, substituir todas as ocorrências de> com>.
- elementos vazios escrever tais como
<br>
,<img>
e<input>
sem fechando tags ou barras.- atributos escrevem que transmitem informações por sua presença como oposição ao seu valor, tal como verificados e selecionados, em minimizado formulário.
a partir de uma sólida IBM artigo cobertura o assunto, a cobertura mais recente da stylusstudio aqui
Se a saída HTML é o que você deseja a saída HTML é o que você deve especificar.
(1) Não há realmente caso canto onde os padrões de saída para HTML, mas eu não acho que é universal e é uma espécie de obtuso para depender disso.
Outras dicas
Tente wraping-lo com <xsl:text disable-output-escaping="yes"><br></xsl:text>
Não sei sobre XSLT, mas ..
Uma solução pode estar usando HttpUtility.HtmlDecode partir System.Web namespace.
using System;
using System.Web;
class Program
{
static void Main()
{
Console.WriteLine(HttpUtility.HtmlDecode("<br>"));
Console.ReadKey();
}
}
...
Entendi! No topo da resposta escolhida, eu também fiz algo semelhante a isto na minha string:
htmlString = htmlString.Replace("<","<")
htmlString = htmlString.Replace(">",">")
Creio, porém, que, no final, eu pode acabar usando tags <pre>
para preservar tudo.
A cadeia "<br>
" já HTML é assim que você pode apenas Response.Write("<br>")
.
Mas você meantion XSLT então eu imagino que alguns transformar acontecendo. Nesse caso, certamente a transformação deve ser de inseri-lo no lugar correto como um nó. A melhor pergunta provavelmente irá obter uma resposta melhor