Domanda

Sto scrivendo un servizio di Windows in C #. Ho un XmlWriter che è contiene l'output di una trasformazione XSLT. Ho bisogno di ottenere il codice XML in un oggetto XMLElement da passare a un servizio web.

Qual è il modo migliore per fare questo?

È stato utile?

Soluzione

Non hai bisogno di una stringa intermedio, è possibile creare un XmlWriter che scrive direttamente in un XmlNode:

XmlDocument doc = new XmlDocument();
using (XmlWriter xw = doc.CreateNavigator().AppendChild()) {
  // Write to `xw` here.
  // Nodes written to `xw` will not appear in the document 
  // until `xw` is closed/disposed.
}

e passare xw come output della trasformazione.

NB. Alcune parti del xsl:. Uscita saranno ignorati (ad esempio codifica) perché XmlDocument utilizzerà le proprie impostazioni

Altri suggerimenti

Bene, un XmlWriter non lo fa contenere l'uscita; in genere, si dispone di un oggetto di supporto (forse un StringBuilder o MemoryStream), che è il luogo di dumping. In questo caso, StringBuilder è probabilmente il più efficiente ... forse qualcosa come:

    StringBuilder sb = new StringBuilder();
    using (XmlWriter writer = XmlWriter.Create(sb))
    {
        // TODO write to writer via xslt
    }
    string xml = sb.ToString();
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xml);
    XmlElement el = doc.DocumentElement;

Se si fornisce uno scrittore, si fornisce un archivio in cui un generatore di uscita sta trasferendo i dati, quindi il replay di Richard è buona, non si ha realmente bisogno di un costruttore di stringa per inviare i dati da un lettore ad un XmlDocument!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top