English 中文(简体)
保留标签中的“空格”。
原标题:
  • 时间:2009-03-25 09:48:12
  •  标签:

在标签内保留空格是可能的吗?

我正在使用XPathNodeIterator获取XPathDocument中包含XHTML内容的XML节点。

节点中的一些标签不是“严格的”XHTML(这在该工具的最终输出中是允许的)。一些节点包含的图像标签没有尾随空格。

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

当我存储结果节点时,它们会以带尾随空格的漂亮格式进行格式化。

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

Is it possible to get the node contents, preserving the in-tag spacing (in this case not have the space)? I was thinking about something similar to 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过程需要进行调整/更新)。这就是为什么我现在希望尽可能保持标记与原始格式接近的原因。


作为一个临时的解决方案,我添加了一些正则表达式(比较节点的新旧版本)来搜索并修复由使用.NET解析XML引入的“差异”。

问题回答

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

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

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

请注意,如果您正在生成XHTML,则用<br/>替换<br />可能会破坏一些旧版本浏览器。<br />被视为带有未知属性“/”的HTML标签,然后被忽略。<br/>被视为未知的HTML标记“br/”。





相关问题
热门标签