XMLTextWriter to XMLDocument - PullRequest
       20

XMLTextWriter to XMLDocument

1 голос
/ 29 октября 2009

У меня есть запись XMLTextWriter в поток веб-запроса. Все работает как надо:

    Dim wr As WebRequest = WebRequest.Create("https://wwwcie.ups.com/ups.app/xml/ShipAccept")
    With wr
        .Method = "POST"
        .ContentType = "application/x-www-form-urlencoded"
    End With
    Dim requestStream As Stream = wr.GetRequestStream
    Using requestStream

        Dim x As New XmlTextWriter(requestStream, Encoding.UTF8)

        Using x
            With x

                .WriteStartDocument()
                'XML

                .WriteStartElement("ShipmentAcceptRequest")
                'ShipmentAcceptRequest

                .WriteStartElement("Request")
                'Request

                .WriteElementString("RequestAction", sar.Request.RequestAction)

                '/Request
                .WriteEndElement()

                .WriteElementString("ShipmentDigest", sar.ShipmentDigest)

                '/ShipmentAcceptRequest
                .WriteEndElement()

                '/XML
                .WriteEndDocument()

                .Flush()

            End With
        End Using

    End Using

Как я могу перехватить этот XML, который пишется как тип XMLDocument? Я попытался извлечь его из потока, но это дало мне «Поток не поддерживает чтение». исключение (которое меня не удивило).

Спасибо

1 Ответ

1 голос
/ 05 февраля 2010

Я не думаю, что вы можете перехватить поток, потому что по определению это:

модуль записи, обеспечивающий быстрый, не кэшированный, прямой способ генерации потоков

без кэширования и только для пересылки ваши проблемы там.

Так ... что-нибудь мешает вам сделать это в обратном порядке?

Запишите свой XML в XmlDocument, и когда вы закончите, вызовите XmlDocument.WriteTo для вывода XML в XmlWriter (в данном случае ваш XmlTextWriter выводится в ваш поток запросов).

...