Можно ли сохранить пробелы внутри тегов?
Я обращаюсь к узлам XML (содержащим содержимое XHTML) в XPathDocument с помощью XPathNodeIterator.
Некоторые из тегов в узлах не являются "строгим" XHTML (и это разрешено в конечном выводе инструмента). Некоторые узлы содержат теги изображений без завершающего пробела.
<img src="filename.png" alt="description"/>
Когда я сохраняю результирующие узлы, они красиво форматируются с помощью конечного пробела.
<img src="filename.png" alt="description" />
Можно ли получить содержимое узла, сохранив интервал между тегами (в этом случае не будет пробела)?
Я думал о чем-то похожем на PreserveWhitespace.
Упрощенный пример используемого кода
xmlDoc = New XPathDocument(fileIn, xmlSpace.Preserve)
xmlNav = xmlDoc.CreateNavigator()
Dim xmlNode As XPathNodeIterator
Dim ns As XmlNamespaceManager = new XmlNamespaceManager(xmlNav.NameTable)
xmlNode = xmlNav.Select("/export/contents[target[@translate='True']]")
While xmlNode.MoveNext()
target = xmlNode.Current.selectSingleNode("target").InnerXML
' ... '
End While
Некоторые предыстории: Как отметил Марк, нет никакой разницы в значении получающегося XML в отношении незначительного пробела внутри тегов (или порядка тегов в этом отношении).
Основная проблема, с которой я сталкиваюсь, заключается в том, что данные поступают из системы CMS, которая обрабатывает как новый, так и устаревший контент. Процесс создания контента совсем недавно был перенесен в XML / XHTML, поэтому в системе все еще существует более старый и нестрогий контент XHTML.
Используемые инструменты QA по-прежнему в основном основаны на тексте и построены для HTML и управляются другим отделом (процесс QA необходимо будет скорректировать / обновить). Вот почему я хотел бы, чтобы теги были как можно ближе к исходному формату.
В качестве временного решения я добавил несколько регулярных выражений (сравнивая новые и предыдущие версии узлов) для поиска и исправления «различий», введенных при разборе XML с помощью .NET