Чтение содержимого
Класс XmlReader содержит элементы, которые используются для считывания содержимого.
Примечание |
---|
Элементы, описанные в этом разделе, возвращают содержимое в виде строковых значений.Сведения о считывании типизированного содержимого см. в разделе Чтение типизированных данных. |
Свойство Value
С помощью свойства Value можно получить текстовое содержимое текущего узла. Возвращаемое значение зависит от типа текущего узла. В следующей таблице описано содержимое, возвращаемое для каждого из возможных типов узла.
Тип узла |
Значение |
---|---|
Attribute |
Значение атрибута. |
CDATA |
Содержимое раздела CDATA. |
Comment |
Содержимое комментария. |
DocumentType |
Внутреннее подмножество. |
ProcessingInstruction |
Полное содержимое, исключая конечное приложение. |
SignificantWhitespace |
Пробелы между разметкой в модели смешанного содержимого. |
Text |
Содержимое текстового узла. |
Whitespace |
Пробелы между разметкой. |
XmlDeclaration |
Содержимое декларации. |
Все остальные типы узлов |
Пустая строка. |
Метод ReadString
Метод ReadString возвращает содержимое элемента или текстового узла в виде строки.
Если объект XmlReader расположен в элементе, метод ReadString объединяет весь текст, значащие и прочие пробелы, а также узлы раздела CDATA и возвращает объединенные данные в качестве содержимого элемента. Модуль чтения останавливается, если обнаруживает элемент разметки. Это может случиться в модели смешанного содержимого или во время считывания закрывающего тега элемента.
Если объект XmlReader расположен в текстовом узле, метод ReadString выполняет такое же объединение текста, пробелов и узлов раздела CDATA. Модуль останавливается на первом узле, который имеет тип, отличный от упомянутых ранее. Если модуль чтения расположен в текстовом узле атрибута, метод ReadString работает так же, как в случае, когда модуль чтения располагается в открывающем теге элемента, и возвращает все объединенные текстовые узлы элемента.
Примечание |
---|
Метод ReadString останавливается на обработке инструкций и комментариев,но не пропускает их. |
Метод ReadInnerXml
Метод ReadInnerXml возвращает все содержимое текущего узла, включая разметку. Текущий узел (открывающий тег) и соответствующий ему конечный узел (закрывающий тег) не возвращаются. Например, если выбрана XML-строка <node>this<child id="123"/></node>, метод ReadInnerXml вернет this<child id="123"/>.
В следующей таблице описано, как обрабатываются узлы элементов и атрибутов.
Тип узла |
Исходное положение |
XML-фрагмент |
Return значение |
Положение после |
---|---|---|---|---|
Element |
В открывающем теге item1. |
<item1>text1</item1><item2>text2</item2> |
text1 |
В открывающем теге item2. |
Attribute |
В узле атрибута attr1. |
<item attr1="val1" attr2="val2">text</item> |
val1 |
Остается в узле атрибута attr1. |
Если модуль чтения располагается в конечном узле, вызов метода ReadInnerXml будет равносилен вызову метода Read.
Метод ReadOuterXml
Метод ReadOuterXml возвращает все XML-содержимое (включая разметку) текущего узла и всех его дочерних узлов. Метод работает аналогично методу ReadInnerXml, но также возвращает открывающий и закрывающий теги.
Согласно значениям в таблице выше, если модуль чтения расположен в открывающем теге item1, метод ReadOuterXml возвращает <item1>text1</item1>. Если модуль чтения расположен в узле атрибута attr1, метод ReadOuterXml возвращает attr1="val1".