使用BodyWriter把数据放进Message
CreateMessage其中一种重载方法允许调用者使用System.ServiceModel.Channels.BodyWriter把数据推送到Message里。
using System; using System.IO; using System.ServiceModel.Channels; using System.Text; using System.Xml; namespace XMLDictionaryWriter { class Program : BodyWriter { private string m_fileName; internal Program(string fileName) : base(true) { this.m_fileName = fileName; } static void Main() { Message message1 = Message.CreateMessage(MessageVersion.Soap12WSAddressing10, "urn:SomeAction", new Program("XMLFile1.xml")); Console.WriteLine(message1.ToString()); Console.ReadKey(); //<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope"> // <s:Header> // <a:Action s:mustUnderstand="1">urn:SomeAction</a:Action> // </s:Header> // <s:Body> // <AndersProfix:Person Name="Mike" Year="3" xmlns:AndersProfix="AndersNameSpace" /> //</s:Body> //</s:Envelope> File.WriteAllText(@"c:\file2.txt", message1.ToString()); } protected override void OnWriteBodyContents(XmlDictionaryWriter writer) { using (FileStream stream = File.Open(m_fileName, FileMode.Open)) { XmlDictionaryReader xdr = XmlDictionaryReader.CreateTextReader( stream, Encoding.UTF8, XmlDictionaryReaderQuotas.Max, null); xdr.ReadStartElement(); while (xdr.NodeType != XmlNodeType.EndElement) writer.WriteNode(xdr, true); } } } }
xmlfile1.xml:
<?xml version="1.0" encoding="utf-8"?>
<AndersProfix:AndersName xmlns:AndersProfix="AndersNameSpace">
<AndersProfix:Person Name="Mike" Year="3" />
</AndersProfix:AndersName>
429

被折叠的 条评论
为什么被折叠?



