我从Web服务生成此类:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
[System.ServiceModel.MessageContractAttribute(IsWrapped=false)]
public partial class RequestMessage
{
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="urn:ihe:iti:xds-b:2007", Order=0)]
public Helper.RequestType Request;
public RequestMessage() {
}
}
我正在尝试通过以下方式创建一个XmlDocument:
XmlDocument xReq = new XmlDocument();
DataContractSerializer serializer = new DataContractSerializer(typeof(RequestMessage));
using (MemoryStream memStm = new MemoryStream())
{
using (XmlWriter xw = XmlWriter.Create(memStm))
{
//xnameSpace.Add("ns0", "urn:ihe:iti:xds-b:2007");
serializer.WriteObject(xw, oReq);
memStm.Position = 0;
xReq.Load(memStm);
}
}
但是我收到一个错误:“有一个未闭合的文字字符串。第1行,第12284位。”在“xReq.Load(memStm);”线。
我正在使用UTF-8编码,但我读过这是默认的“XmlSerializerNamespaces”..
可能是什么问题?
答案 0 :(得分:1)
在阅读之前你必须刷新XmlWriter
:
serializer.WriteObject(xw, oReq);
// Make sure all the XML has been written to the stream.
xw.Flush();
memStm.Position = 0;
xReq.Load(memStm);
否则,序列化XML的最后一部分不会写入流,而在您的情况下会产生一个没有收尾报价的开头报价。
答案 1 :(得分:0)
在我的情况下,程序仍然保留XML文件,因此收到此错误。结束该计划解决了这个问题。