Domanda

Sto popolando un XElement con le informazioni e la scrittura in un file XML utilizzando il metodo XElement.Save(path). Ad un certo punto, alcuni caratteri nel file risultante sono fuggiti - per esempio, > diventa >.

Questo comportamento è inaccettabile, dal momento che ho bisogno di memorizzare le informazioni in XML che include il carattere > come parte di una password. Come faccio a scrivere il contenuto 'crudo' di mio oggetto XElement in XML senza dover questi scappati?

È stato utile?

Soluzione

La specifica XML permette di solito > di apparire escape. XDocument gioca sul sicuro e sfugge anche se appare in luoghi in cui non è strettamente necessaria la fuga.

Si può fare una sostituzione sul XML generato. Essere consapevoli per http://www.w3.org/TR/REC-xml#syntax , se ciò comporta alcun sequenze ]]>, l'XML è conforme alla specifica XML. Inoltre, XDocument.Parse sarà effettivamente rifiutare tale XML con l'errore " ']]>' non è consentito nei dati di caratteri.".

XDocument doc = XDocument.Parse("<test>Test&gt;Data</test>");
// Don't use this if it could result in any ]]> sequences!
string s = doc.ToString().Replace("&gt;", ">");
System.IO.File.WriteAllText(@"c:\path\test.xml", s);

In considerazione che qualsiasi parser XML spec-compliant deve supportare &gt;, consigliamo vivamente che fissa il codice che sta elaborando l'output XML del programma.

Altri suggerimenti

La mancanza di questo comportamento è inaccettabile.

Un autonomo senza caratteri di escape > è non valida XML .
XElement è progettato per produrre XML valido.

Se si desidera ottenere l'escape contenuto dell'elemento, utilizzare la proprietà Value.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top