今天碰到的一个问题,把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)
字符串是
<P><B>title</B></P>
<P> text 1 </P>
<P><B>description:</B></P>
<P>1. Provide<A href="http://dfafa&daffa&fasdf=1">rr</A></P>
<P>2. Reference <A href="http://dfafa&daffa&fasdf=1">ee</A>Guideline </P>
<P>3. Discuss</P>
<P>4. Schedulet </P>
原因是:
A 标签在解析过程有问题,说是因为&符号。
解决方法:
1.针对特殊字符,例如:&, 需要转义
2.对于标签不匹配,例如: <span> 没有结束标签,需要手动修改。
可以使用工具XML Notepad,来确定出错位置,很方便。
如果在开发过程中,需要使用文本编辑器。
推荐一个工具:TinyMCE.