XmlTextReader.Normalization Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает значение, указывающее, следует ли нормализовать значения пробелов и атрибутов.
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
Значение свойства
true для нормализации; falseв противном случае . Значение по умолчанию — false.
Исключения
Установка этого свойства при закрытии средства чтения (ReadState имеет значение ReadState.Closed).
Примеры
В следующем примере показано поведение чтения с включенной нормализацией и выключением.
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
Комментарии
Note
Рекомендуем создавать XmlReader экземпляры с помощью XmlReader.Create метода, чтобы воспользоваться новыми функциями.
Это свойство можно изменить в любое время и вступает в силу при следующей операции чтения.
Note
XmlTextReader Если используется для построения атрибута , для нормализации значений XmlValidatingReaderNormalizationатрибутов необходимо задать значение true.
Если Normalization задано значение false, это также отключает проверку диапазона символов для числовых сущностей. В результате разрешены сущности символов, например �.
Ниже описана нормализация значений атрибутов:
Для ссылки на символы добавьте указанный символ в значение атрибута.
Для ссылки на сущность рекурсивно обработайте замещающий текст сущности.
Для символа пробела (#x20, #xD, #xA, #x9) добавьте #x20 в нормализованное значение. (Для последовательности "#xD#xA" добавляется только одна #x20 или литеральное значение сущности внутреннего синтаксического анализа.)
Обработайте другие символы, добавив их в нормализованное значение.
Если объявленное значение не является CDATA, удалите все начальные и конечные символы (#x20) и замените последовательности символов пробела (#x20) одним пробелом (#x20).
Выполняется XmlTextReader только нормализация атрибута или CDATA. Он не выполняет нормализацию для DTD, если только не упакован в нее XmlValidatingReader.
Дополнительные сведения о нормализации см. в рекомендации W3C XML 1.0.