有一个未封闭的文字字符串。第1行,第12284位

时间:2013-12-09 10:00:27

标签: c# .net xml

我从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”..

可能是什么问题?

2 个答案:

答案 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文件,因此收到此错误。结束该计划解决了这个问题。