Je le code XML suivant qui est construit à l'exécution en utilisant un XmlDocument
:XmlDocument.Save en omettant des éléments
<?xml version="1.0" standalone="yes"?>
<NewConfig xmlns="http://tempuri.org/NewConfig.xsd">
<SystemReference xmlns="">
<ID>1</ID>
<Name>CountryName</Name>
</SystemReference>
<ClientList xmlns="">
<Type>Private</Type>
<!-- elements omitted... -->
<VAT>1234567890</VAT>
</ClientList>
</NewConfig>
Je sauve ce XML à un socket TCP avec le code suivant:
TcpClient client = ...
XmlDocument configDocument = ...
using (StreamWriter writer = new StreamWriter(client.GetStream()))
{
writer.AutoFlush = true;
configDocument.Save(writer);
writer.WriteLine();
}
Mais cela provoque la tronçure du code XML reçu par l'autre extrémité du socket - les deux derniers éléments (</ClientList>
et </NewConfig>
) ne sont jamais présents.
Cependant, si j'utilise le code suivant, le XML est envoyé avec succès:
TcpClient client = ...
XmlDocument configDocument = ...
using (StreamWriter writer = new StreamWriter(client.GetStream()))
{
writer.AutoFlush = true;
writer.WriteLine(configDocument.OuterXml);
}
Ma question est donc: Est-ce que quelqu'un sait pourquoi XmlDocument.Save()
semble ignorer les éléments de fermeture lors de l'écriture à la Stream
?