2009-03-25 4 views
0

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

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

+0

Я скорее не редактирую содержимое, поэтому добавление xml: whitespace к контенту на самом деле не является вариантом. – barry

+0

Можете ли вы показать нам пример кода, иллюстрирующий, как вы обращаетесь к узлам XML и выводите их? – Cerebrus

+0

Я добавил пример кода – barry

ответ

1

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

<img alt="description" src="filename.png" /> 
+0

Да, конечный результат точно такой же (окончательный XHTML также отображается идентичным). Проблема в том, что простое сравнение текста показывает одну разницу в пространстве. Я согласен, что нет никакой разницы, но требование говорит, что интервал в тегах должен быть идентичным ... – barry

+0

Тогда требование игнорирует саму природу xml ... –

+0

Я прилагаю все усилия, чтобы убедить клиента в том, что в каждом аспекте нет никакого риска, связанного с результатом. И технически они заканчиваются «чистым» контентом. – barry

0

пост-обработки файла с регулярное выражение s/[] [/] [>]/[/] [>]/г.

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

+0

Спасибо. На данный момент выполняется автоматическое сопоставление тегов по тегам с «обработанными» тегами с источниками в CMS и при необходимости «исправлять» теги (с использованием регулярных выражений). Поскольку в настоящее время цели не являются строгими XHTML, и есть некоторые минимальные требования для использования браузера, я, к счастью, не должен беспокоиться о совместимости на уровне ниже. – barry

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