タグ内の空白を保持することは可能ですか?
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 プロセスは調整/更新する必要があります)。これが、今のところ、タグを可能な限り元の形式に近づけたい理由です。
一時的な回避策として、XML を .NET で解析することによって導入された「相違点」を検索して修正するために、(新しいバージョンと以前のバージョンのノードを比較する) いくつかの正規表現を追加しました。