Сохранение «пробелов» внутри тегов - PullRequest
0 голосов
/ 25 марта 2009

Можно ли сохранить пробелы внутри тегов?

Я обращаюсь к узлам 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

Ответы [ 2 ]

1 голос
/ 25 марта 2009

Я не знаю ни одного инструмента синтаксического анализа / xml / etc (по крайней мере, в .NET), который бы различал эти два (незначительный пробел). По смыслу они идентичны - так же, как они идентичны:

<img alt="description" src="filename.png" />
0 голосов
/ 16 июня 2009

Последующая обработка файла с помощью регулярного выражения s / [] [/] [>] / [/] [>] / g.

Помните, что если вы генерируете XHTML, замена
на
может привести к поломке некоторых браузеров нижнего уровня.
рассматривается как HTML-тег с неизвестным атрибутом "/", который затем игнорируется.
виден как неизвестный тег HTML "br /".

...