2017-10-12 13 views
3

<のようなエスケープ文字を含む属性文字列を含むXMLがあります。XDocumentでXMLを読むときにエスケープ文字をデコードしない

XDocumentでこのようなファイルを読み取り、.Valueを使用して属性のコンテンツにアクセスすると、そのようなエスケープされたすべての文字がデコードされます。 .Valueは、&lt;ではなく、<を含む文字列を返します。

XML文字列に含まれている生のテキストをデコードしないで保存する方法はありますか?

+0

は、 '<' '<'とエスケープをエスケープあなたがそうであるように、あなたは、単に属性値を読み取ることができますそれを脱出してください。 [InnerXml'プロパティ](https://stackoverflow.com/a/1132533/1997232)があるようですが、おそらく 'XmlDocument'を使うだけでしょうか? – Sinatr

+0

'new XText(x.Value).ToString()'のようなものを使用してエスケープすることができますが、結果はソースと同一であるという保証はありません。 –

+0

私は一度これをやろうとしたことがありましたが(あなたの説明通り正しく、文字エンティティを含むすべてのXMLエンティティを展開しないでください)、成功することはありません。 – Evk

答えて

0

それは非常に美しいではありませんが、私はこれを使用:XML文字列の両方が含まれていない場合は

var attributeText = attribute.ToString(); 
attributeText = attributeText.TrimPrefix(attributeName); 
attributeText = attributeText.TrimStart('='); 
attributeText = attributeText.Trim('\"'); 
関連する問題