我正在研究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问题?请给我一些建议。
答案 0 :(得分:4)
该字符串无效(格式正确)XML。你不能将任意字符串“转换”为XML - 至少不需要付出一些努力。
在您的情况下,字符串内容看起来像XML,但有错误。
特别要看这条“线”:
vti_etag:SW|"{6815B6B4-1BB2-49D5-8326-3FFCE74A5E1A},7"
这实际上是“MetaInfo”属性值的一部分。由于它是属性的一部分,因此不能包含文字引号。举个例子,把它变成
vti_etag:SW|"{6815B6B4-1BB2-49D5-8326-3FFCE74A5E1A},7"
会产生有效的XML。
我建议你阅读一般的XML,特别是有关逃避的内容。
此外,如果您可以控制XML数据的生成,请确保首先使用适当的工具生成它。请勿使用string.Format
,StringBuilder
等,而是使用XmlWriter
,XDocument
,XmlDocument
等。
答案 1 :(得分:0)
转到here检查您的XML。
第一个错误是它所说的部分:
vti_etag:SW|"{6815B6B4-1BB2-49D5-8326-3FFCE74A5E1A},7"
因为这与您引用的其他属性值不能很好地混合。
如果你真的无法控制字符串响应,那么在将其加载到XmlDocument之前,最好对字符串进行操作以修复它。