XmlTextReader.Normalization Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Recebe ou define um valor que indica se deve normalizar espaços em branco e valores de atributos.
public:
property bool Normalization { bool get(); void set(bool value); };
public bool Normalization { get; set; }
member this.Normalization : bool with get, set
Public Property Normalization As Boolean
Valor de Propriedade
true normalizar; caso contrário, false. A predefinição é false.
Exceções
Definir esta propriedade quando o leitor está fechado (ReadState é ReadState.Closed).
Exemplos
O exemplo seguinte mostra o comportamento do leitor com a normalização ativada e depois desligada.
using System;
using System.IO;
using System.Xml;
public class Sample{
public static void Main(){
// Create the XML fragment to be parsed.
string xmlFrag =
@"<item attr1=' test A B C
1 2 3'/>
<item attr2=''/>";
// Create the XmlNamespaceManager.
XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
// Create the XmlParserContext.
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.Preserve);
// Create the reader.
XmlTextReader reader = new XmlTextReader(xmlFrag, XmlNodeType.Element, context);
// Show attribute value normalization.
reader.Read();
reader.Normalization = false;
Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr1"));
reader.Normalization = true;
Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr1"));
// Set Normalization back to false. This allows the reader to accept
// character entities in the � to range. If Normalization had
// been set to true, character entities in this range throw an exception.
reader.Normalization = false;
reader.Read();
reader.MoveToContent();
Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr2"));
// Close the reader.
reader.Close();
}
}
Imports System.IO
Imports System.Xml
public class Sample
public shared sub Main()
' Create the XML fragment to be parsed.
Dim xmlFrag as string = "<item attr1=' test A B C " + Chr(10) & _
" 1 2 3'/>" + Chr(10) & _
"<item attr2=''/>"
' Create the XmlNamespaceManager.
Dim nsmgr as XmlNamespaceManager = new XmlNamespaceManager(new NameTable())
' Create the XmlParserContext.
Dim context as XmlParserContext = new XmlParserContext(nothing, nsmgr, nothing, XmlSpace.Preserve)
' Create the reader.
Dim reader as XmlTextReader = new XmlTextReader(xmlFrag, XmlNodeType.Element, context)
' Show attribute value normalization.
reader.Read()
reader.Normalization = false
Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr1"))
reader.Normalization = true
Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr1"))
' Set Normalization back to false. This allows the reader to accept
' character entities in the � to range. If Normalization had
' been set to true, character entities in this range throw an exception.
reader.Normalization = false
reader.Read()
reader.MoveToContent()
Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr2"))
' Close the reader.
reader.Close()
end sub
end class
Observações
Note
Recomendamos que crie instâncias XmlReader usando o método XmlReader.Create para aproveitar a nova funcionalidade.
Esta propriedade pode ser alterada a qualquer momento e entra em vigor na próxima operação de leitura.
Note
Se o XmlTextReader for usado para construir um XmlValidatingReader, para normalizar valores de atributo, Normalization deve ser definido como true.
Se Normalization for definido como false, isto também desativa a verificação de intervalo de caracteres para entidades numéricas. Como resultado, entidades de personagem, como �, são permitidas.
O seguinte descreve a normalização dos valores dos atributos:
Para uma referência de carácter, acrescente o carácter referenciado ao valor do atributo.
Para uma referência de entidade, processe recursivamente o texto de substituição da entidade.
Para um carácter de espaço em branco (#x20, #xD, #xA, #x9), adicione #x20 ao valor normalizado. (Apenas um único #x20 é acrescentado para uma sequência "#xD#xA" que faz parte de uma entidade externa analisada ou o valor literal da entidade de uma entidade interna analisada.)
Processa outros caracteres acrescentando-os ao valor normalizado.
Se o valor declarado não for CDATA, descarte quaisquer caracteres de espaço inicial e final (#x20) e substitua as sequências de caracteres de espaço (#x20) por um único carácter de espaço (#x20).
O XmlTextReader único executa a normalização de atributos ou CDATA. Não faz normalização específica para DTD a menos que esteja envolvida dentro de um XmlValidatingReader.
Consulte a recomendação do W3C XML 1.0 para uma discussão adicional sobre normalização.