2010-08-05 6 views
0

Je dispose d'un fichier de modèle XML comme siXDocument.Load perdre Déclaration

<?xml version="1.0" encoding="us-ascii"?> 
<AutomatedDispenseResponse> 
    <header shipmentNumber=""></header> 
    <items></items> 
</AutomatedDispenseResponse> 

Lorsque j'utilise XDocument.Load, pour une raison quelconque le

<?xml version="1.0" encoding="us-ascii"?> 

est tombé.

Comment charger le fichier dans un XDocument et ne pas perdre la déclaration en haut?

Répondre

2

Je suppose que ce n'est pas vraiment laisser tomber la déclaration sur le chargement - c'est quand vous écrivez le document que vous le manquez. Voici un exemple d'application qui fonctionne pour moi:

using System; 
using System.Xml.Linq; 

class Test 
{ 
    static void Main() 
    { 
     XDocument doc = XDocument.Load("test.xml"); 
     Console.WriteLine(doc.Declaration); 
    } 
} 

Et test.xml:

<?xml version="1.0" encoding="us-ascii" ?> 
<Foo> 
    <Bar /> 
</Foo> 

Sortie:

<?xml version="1.0" encoding="us-ascii"?> 

La déclaration n'est pas montré par XDocument.ToString(), et peut être remplacé lorsque vous utilisez XDocument.Save parce que vous utilisez peut-être quelque chose comme TextWriter qui sait déjà l'encodage utilise. Si vous enregistrez un flux ou juste un nom de fichier, il est conservé dans mon expérience.

+0

Je l'ai compris peu de temps après l'affichage (bien sûr). L'intellisense me rejetait depuis qu'elle appelait ToString(). Je dois juste faire quelque chose comme http://stackoverflow.com/questions/957124/how-to-print-xml-version1-0-using-xdocument/957161#957161 – Kenoyer130

2

Il est chargé. Vous pouvez le voir et accéder à des parties de celui-ci en utilisant:

XDocument.Parse(myDocument).Declaration