如何使用c#xmlreader处理包含嵌套xml的xml?
我正在使用c#与一个具有公开restapi的数据库进行交互。我感兴趣的表包含论坛帖子,其中一些帖子本身包含xml 每当我的结果集包含包含xml的帖子时,我的应用程序就会抛出一个错误,如下所示: 异常详细信息:System.Xml.XmlException:“>”是意外标记。所需的标记为“”或“”。第1行,位置62 这是一条失败的路线: 第44行:ds.ReadXml(xmlData) 这是我正在使用的代码:如何使用c#xmlreader处理包含嵌套xml的xml?,c#,xml,C#,Xml,我正在使用c#与一个具有公开restapi的数据库进行交互。我感兴趣的表包含论坛帖子,其中一些帖子本身包含xml 每当我的结果集包含包含xml的帖子时,我的应用程序就会抛出一个错误,如下所示: 异常详细信息:System.Xml.XmlException:“>”是意外标记。所需的标记为“”或“”。第1行,位置62 这是一条失败的路线: 第44行:ds.ReadXml(xmlData) 这是我正在使用的代码: var webClient = new WebClient();
var webClient = new WebClient();
string searchString = searchValue.Text;
string requestUrl = "http://myserver/restapi.ashx/search.xml?pagesize=4&pageindex=0&query=";
requestUrl += searchString;
XmlReaderSettings settings = new XmlReaderSettings();
settings.ProhibitDtd = false;
XmlReader xmlData = XmlReader.Create(webClient.OpenRead(requestUrl),settings);
DataSet ds = new DataSet();
ds.ReadXml(xmlData);
Repeater1.DataSource = ds.Tables[1];
Repeater1.DataBind();
这是它阻塞的XML记录类型(节点中的内容导致了问题):
994
帮助文件:它们是用什么编写的?
http://myserver/linktest.aspx
2008-10-16T16:18:00+01:00发布时间
当这个xml被激发到CRM时,它创建了13条空记录,有人能看到这个xml有什么明显的错误吗??xml version=“1.0”encoding=“UTF-8”?soap:Envelope xmlns:typens=”“soap:encodingStyle=”“xmlns:xsi=”“xmlns:soapenc=”“xmlns:wsdlns=”“xmlns:xsd=“xsi:type=”xsd:long”18208442035524/sessionId/SessionHeader/soap:Headersoap:Bodytypens:addentityname xsi:type=“xsd:string”lead/entitynamecords xsi:nil=“true”xsi:type=“typens:ewarebase”/status xsi:type=“xsd:string”预注册/statusrequester xsi:type=“xsd:string”Mimnagh/requestersonfirstname xsi:type=“xsd:string”Sean/personfirstnamepersonlastname xsi:type=“xsd:string”Test2/personlastnamepersonsalutation xsi:type=“xsd:string”Mr/personsalutationdetails xsi:type=“xsd:string”测试项目详细信息/details描述xsi:type=“xsd:string”测试描述详细信息/descriptioncomments建议xsi:type=“xsd:string”测试项目注释/CommentsPersonMail xsi:type=“xsd:string”smimnagh@mac.com/PersonMailPersonPhoneNumber xsi:type=“xsd:string”12334566777/PersonPhoneNumber类型xsi:type=“xsd:string”PreReg/typecompanyname xsi:type=“xsd:string”站点客户端/companyname/typens:add/soap:Body/soap:信封非常感谢
xml
2010-07-08T11:53:46.848+01:00
我可以用xmlreader做些什么来让它忽略导致问题的原因吗
请注意,我不能在使用XML之前更改它-因此,如果它的格式不正确,那么我想知道是否有一种方法可以忽略或修改该特定记录而不产生错误
谢谢!看起来您的某些引用需要在某些元素的内容中转义。请尝试使用
"
用于不包装属性值的引号
更新:
因为您想要读取的数据并不是严格意义上的XML(它几乎是XML),所以最好是
但请注意,这样做是万不得已的。您的
标记的内容格式不正确。XML对数据的语法要求非常严格。要么在XML中嵌入CDATA节,要么正确转义字符串。我无法控制XML,因为它来自第三方应用程序。因此我需要一些方法在它的畸形状态下处理它。
"
"