保留标签内的“空白”

时间:2009-03-25 09:48:12

标签: c# xml vb.net whitespace

是否可以在标签内保留空格?

我正在使用XPathNodeIterator访问XPathDocument中的XML节点(包含XHTML内容)。

节点中的一些标签不是“严格”的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

一些背景知识:正如Marc指出的那样,关于标签内部的非重要空白(或者标签顺序),生成的XML的含义没有区别。

我遇到的主要问题是数据来自处理新旧内容的CMS系统。内容创建过程最近才转移到XML / XHTML,因此系统中仍然存在较旧的非严格XHTML内容。

所使用的质量检查工具仍然主要是基于文本的,并且是针对HTML构建的,并且由另一个部门运行(需要调整/更新质量检查流程)。这就是为什么我想保持标签尽可能接近原始格式。


作为临时解决方案,我添加了一些正则表达式(比较新节点和以前版本的节点)来搜索和修复通过.NET解析XML引入的“差异”

2 个答案:

答案 0 :(得分:1)

我不知道任何解析器/ xml工具/等(至少在.NET中)可以区分这两者(无关紧要的空白)。就意义而言,它们是相同的 - 与它们完全相同:

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

答案 1 :(得分:0)

使用正则表达式/ [] [/] [&gt;] / [/] [&gt;] / g对文件进行后处理。

请注意,如果您要生成XHTML,请替换&lt; br /&gt;与&lt; br /&gt;可能会打破一些下层浏览器。 &lt; br /&gt;被视为具有未知属性“/”的HTML标记,然后将其忽略。 &LT峰; br /&GT;被视为未知的HTML标签“br /”。