2010-05-06 2 views
3

Я разбором данных Xml, который имеет записи, как это:Xml с пробелами как InnerText

<item name="UserText" type_name="gh_string" type_code="10">  </item> 

Я должен читать 6 пространства в виде строки, но оба значения InnerText и InnerXml из системы .Xml.XmlNode - это строки с нулевой длиной.

Есть ли способ получить данные пробелов в существующих файлах и что мне нужно делать в будущем, чтобы предотвратить появление такого рода винтов?

ответ

4

XML игнорирует пробелы. Если вам нужно сохранить его, вы должны вставить в свои элементы атрибут xml:space="preserve". Что-то вроде этого, которое, я думаю, будет сохранять ваши пробелы везде, где потребляется XML.

<item xml:space="preserve" name="UserText" type_name="gh_string" type_code="10">  </item> 

Другой вариант, который будет работать с LINQ к XML является использование опции PreserveWhitespace нагрузки. Пример:

XElement element = XElement.Parse(xml, LoadOptions.PreserveWhitespace); 

Вы также должны иметь возможность обертывать пробелы в теге CData, не проверять.

3

Если вы читаете в XML с XMLReader просто использовать XmlReaderSettings с IgnoreWhitespace установлен в ложном

XmlReader r = XmlReader.Create("file",new XmlReaderSettings{ IgnoreWhitespace=false;}) 
+0

Нет, я использую System.Xml.XmlDocument.LoadXml() –

Смежные вопросы