今天碰到的一个问题,把string 解析成xml时,抛出异常,如下:
问题:
An exception of type'System.Xml.XmlException' occurred and was caught.
Type : System.Xml.XmlException,System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=
Message : '=' is an unexpected token. The expected token is ';'. Line X,position XXX.
或者
Message : The 'SPAN' start tag on line 1position 137 does not match the end tag of 'P'. Line X, position XXX.
Source : System.Xml
Help link :
LineNumber : X
LinePosition : XXX
SourceUri :
Data :System.Collections.ListDictionaryInternal
TargetSite : Void Throw(System.String,System.String[]) HResult : -2146232000
Stack Trace : atSystem.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
at System.Xml.XmlTextReaderImpl.HandleEntityReference(BooleanisInAttributeValue, EntityExpandType expandType, Int32& charRefEndPos)
at System.Xml.XmlTextReaderImpl.ParseAttributeValueSlow(Int32 curPos,Char quoteChar, NodeData attr)
at System.Xml.XmlTextReaderImpl.ParseAttributes()
at System.Xml.XmlTextReaderImpl.ParseElement()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r)
at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptionso)
at System.Xml.Linq.XElement.ReadElementFrom(XmlReader r, LoadOptions o)
at System.Xml.Linq.XElement.Load(XmlReader reader, LoadOptions options)
at System.Xml.Linq.XElement.Parse(String text, LoadOptions options)
字符串是
title
text 1
description:
1. Providerr
2. Reference eeGuideline
3. Discuss
4. Schedulet
原因是:
A 标签在解析过程有问题,说是因为&符号。
或者 HTML 标签不匹配, 即:开始和结束标签不匹配。
解决方法:
1.针对特殊字符,例如:&, 需要转义
2.对于标签不匹配,例如: 没有结束标签,需要手动修改。
可以使用工具XML Notepad, 来确定出错位置,很方便。
如果在开发过程中,需要使用文本编辑器。
推荐一个工具:TinyMCE.
这个工具可以自动修复不正确的标签。出错率低。