У меня есть следующий XML, созданный во время выполнения с использованием XmlDocument
:
<?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>
Я сохраняю этот XML в сокет TCP со следующим кодом:
TcpClient client = ...
XmlDocument configDocument = ...
using (StreamWriter writer = new StreamWriter(client.GetStream()))
{
writer.AutoFlush = true;
configDocument.Save(writer);
writer.WriteLine();
}
Но это приводит к тому, что XML, полученный другим концом сокета, усекается — последние 2 элемента (</ClientList>
и </NewConfig>
) никогда не присутствуют.
Однако, если я использую следующий код, XML отправляется успешно:
TcpClient client = ...
XmlDocument configDocument = ...
using (StreamWriter writer = new StreamWriter(client.GetStream()))
{
writer.AutoFlush = true;
writer.WriteLine(configDocument.OuterXml);
}
Поэтому мой вопрос: кто-нибудь знает, почему XmlDocument.Save()
, похоже, игнорирует закрывающие элементы при записи в Stream
?