0

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

我正在使用 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 内容。

使用的 QA 工具仍然主要基于文本并为 HTML 构建,并由另一个部门运行(QA 流程将需要调整/更新)。这就是为什么我现在希望标签尽可能接近原始格式。


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

4

2 回答 2

1

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

<img alt="description" src="filename.png" />
于 2009-03-25T09:52:43.037 回答
0

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

请注意,如果您正在生成 XHTML,将 <br /> 替换为 <br/> 可能会破坏一些低级浏览器。<br /> 被视为具有未知属性“/”的 HTML 标记,然后将其忽略。<br/> 被视为未知的 HTML 标记“br/”。

于 2009-06-16T16:35:20.647 回答