如何在c#中将字符串转换为xml格式?

时间:2014-08-13 07:21:11

标签: c# xml web-services

我正在研究c#web服务,在这里我得到了字符串响应,我已经附加了以下异常。

异常消息:

System.Xml.XmlException: Name cannot begin with the '{' character, hexadecimal value 0x7B. Line 3, position 14.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
at System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String[] args)
at System.Xml.XmlTextReaderImpl.ParseAttributes()
at System.Xml.XmlTextReaderImpl.ParseElement()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
at System.Xml.XmlDocument.Load(XmlReader reader)
at System.Xml.XmlDocument.LoadXml(String xml)

代码和示例数据:

var string ="";
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(result);
return xmldoc;

var string ="<Wssrecords    PageSize="1"    PageCount="1"    PageNumber="1"    TotalRecordsFetched="1"   ><Wss    RowNumber ="0"    ID ="533"    DocumentName ="FXFrameworknkolla"    UserId ="kpease"    ActualName ="Narasimha"    TimeLastModified ="2014-08-13 12:21:25"    ModifiedBy ="AGILITYINDIA\fxservice"    CheckOutStatus ="None"    ServerRelativeUrl ="/TestSite/NASeForms/FXFrameworknkolla.png"    DocUrl ="http://inhydfrmtwo:33575/TestSite/NASeForms/FXFrameworknkolla.png"    selected =""    FileSize ="1971"        DocType ="General"        _CheckinComment = "533;#"    _EditMenuTableStart = "FXFrameworknkolla.png"    _EditMenuTableEnd = "533"    LinkFilenameNoMenu = "FXFrameworknkolla.png"    LinkFilename = "FXFrameworknkolla.png"    DocIcon = "png"    ServerUrl = "/TestSite/NASeForms/FXFrameworknkolla.png"    EncodedAbsUrl = "http://inhydfrmtwo:33575/TestSite/NASeForms/FXFrameworknkolla.png"    BaseName = "FXFrameworknkolla"    FileSizeDisplay = "1971"    MetaInfo = "533;#ActualName:SW|Narasimha
vti_rtag:SW|rt:6815B6B4-1BB2-49D5-8326-3FFCE74A5E1A@00000000007
vti_etag:SW|"{6815B6B4-1BB2-49D5-8326-3FFCE74A5E1A},7"
vti_parserversion:SR|12.0.0.6665
DocType:SW|General
vti_modifiedby:SR|AGILITYINDIA\\fxservice
vti_docstoreversion:IR|7
ContentTypeId:SW|0x0101000069C1CDA7F5314AB877D5A06E6948E3
vti_lastheight:IX|48
UserId:SW|kpease
vti_author:SR|AGILITYINDIA\\fxservice
FormCode:SW|EXP-7204
vti_lastwidth:IX|48
vti_replid:SR|rid:{6815B6B4-1BB2-49D5-8326-3FFCE74A5E1A}
"    _Level = "1"    _IsCurrentVersion = "1"    SelectTitle = "533"    SelectFilename = "533"    owshiddenversion = "8"    _UIVersion = "512"    _UIVersionString = "1.0"    Order = "53300.0000000000"    GUID = "{763F4C63-9271-4CF6-9CCF-2C419A0AE698}"    WorkflowVersion = "1"    ParentVersionString = "533;#"    ParentLeafName = "533;#"    Combine = "0"    RepairDocument = "0"/></Wssrecords>"

有谁知道如何解决这个xml问题?请给我一些建议。

2 个答案:

答案 0 :(得分:4)

该字符串无效(格式正确)XML。你不能将任意字符串“转换”为XML - 至少不需要付出一些努力。

在您的情况下,字符串内容看起来像XML,但有错误。

特别要看这条“线”:

vti_etag:SW|"{6815B6B4-1BB2-49D5-8326-3FFCE74A5E1A},7"

这实际上是“MetaInfo”属性值的一部分。由于它是属性的一部分,因此不能包含文字引号。举个例子,把它变成

vti_etag:SW|&quot;{6815B6B4-1BB2-49D5-8326-3FFCE74A5E1A},7&quot;

会产生有效的XML。

我建议你阅读一般的XML,特别是有关逃避的内容。 此外,如果您可以控制XML数据的生成,请确保首先使用适当的工具生成它。请勿使用string.FormatStringBuilder等,而是使用XmlWriterXDocumentXmlDocument等。

答案 1 :(得分:0)

转到here检查您的XML。

第一个错误是它所说的部分:

vti_etag:SW|"{6815B6B4-1BB2-49D5-8326-3FFCE74A5E1A},7"

因为这与您引用的其他属性值不能很好地混合。

如果你真的无法控制字符串响应,那么在将其加载到XmlDocument之前,最好对字符串进行操作以修复它。