2009-07-30 21 views
2

Ich erstelle mehrere XmlElements, die in einem größeren XML-Dokument verwendet werden.Ampersand zu XmlElement hinzufügen

XmlElement thisElement = xmlSearchParameters.CreateElement("value"); 
thisElement.InnerXml = this.searchParameters[key]; 

Das funktioniert gut für die meisten Fälle, aber wenn der Wert von searchParameters [key] ein & Symbol enthalten passiert, bekomme ich eine der beiden folgenden Fehler:

Unerwartetes Ende der Datei aufgetreten ist. Zeile 1, Position 1. - Wenn der Wert NUR & ist

Beim Analysieren von EntityName ist ein Fehler aufgetreten. Zeile 1, Position 7. - Wenn der Wert & mit anderem Text gemischt enthält.

Was ist der bevorzugte Weg, um & und andere spezielle Symbole in ein XmlElement einzuschließen? Ich vermute, es muss einen besseren Weg geben, als nur & durch etwas anderes zu ersetzen (irgendeine Art von XmlFormat-Methode).

Antwort

8

Warum verwenden Sie InnerXml an erster Stelle? Es sollte verwendet werden, wenn Sie ein gültiges Markup in nicht geparsten Zeichenfolgenform haben und es dort einfügen möchten. Für Nur-Text verwenden InnerText:

thisElement.InnerText = this.searchParameters[key]; 
+0

Danke für den Tipp. Ich habe nicht viel mit XmlElement in der Vergangenheit gearbeitet und so wurde der Code eingerichtet, als ich anfing, daran zu arbeiten. Die Verwendung von InnerText löst mein Problem. – Kris

2

SecurityElement.Escape ersetzen die weniger als, größer als, Zitat, Apostroph und Ampersand-Symbole, die wahrscheinlich alles ist, was Sie brauchen.

4

Wenn Sie InnerXml verwenden Sie das Textwert ist gültig xml zu gewährleisten haben. Verwenden Sie die InnerText-Eigenschaft anstelle von InnerXml.