我目前正在处理一些XML.
我有节点,如下所示:
<node>This is a string</node>
Run Code Online (Sandbox Code Playgroud)
我传递给节点的一些字符串将包含&,#,$等字符.
<node>This is a string & so is this</node>
Run Code Online (Sandbox Code Playgroud)
这是因为&
我无法将这些字符串包装在CDATA中,因为它们需要保持原样.我试过在线查找一些字符列表,这些字符无法放入XML节点而不是CDATA.
任何人都可以指向一个方向或向我提供非法字符列表吗?
我从以下代码块中得到以下异常.
解析EntityName时发生错误.第1行,位置844.
我试图将从表中检索到的数据集解析为数据集.
public DataSet BindMasterData(string xml)
{
DataSet ds = null;
try
{
ds = new DataSet();
TextReader txtReader = new StringReader(xml);
XmlReader reader = new XmlTextReader(txtReader);
ds.ReadXml(reader);
}
catch (Exception ex)
{
return new DataSet();
}
return ds;
}
Run Code Online (Sandbox Code Playgroud)
我已经找出了异常的原因,但我无法解决它.在这种特殊情况下,字符串(从DB检索)包含一个特殊字符(&).这导致例外.我怎么解决它.对此的任何帮助都会很棒.
谢谢你,塞巴斯蒂安
我试图使用urllib2和ElementTree解析python中的HTML页面,我在解析HTML时遇到了麻烦.网页在引用的字符串中包含"&"但ElementTree会为包含&的行抛出parseError
脚本:
import urllib2
url = 'http://eciresults.nic.in/ConstituencywiseU011.htm'
req = urllib2.Request(url, headers={'Content-type': 'text/xml'})
r = urllib2.urlopen(req).read()
import xml.etree.ElementTree as ET
htmlpage=ET.fromstring(r)
Run Code Online (Sandbox Code Playgroud)
这会在Python 2.7中引发跟随错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1282, in XML
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1624, in feed
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1488, in _raiseerror
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 676, column 73
Run Code Online (Sandbox Code Playgroud)
错误对应于以下行
<input type="hidden" id="HdnFldAndamanNicobar" value="1,Andaman & Nicobar Islands;" />
Run Code Online (Sandbox Code Playgroud)
看起来当读取HTML页面时,&符号不会像&变量r 那样被解析
我试图使用R程序使用htmlTreeParse解析,"&"转换为&正确.
如果我在urllib2中遗漏了任何内容,请告诉我
编辑:我将"&"替换为"&" &但是第904行包含<javascript中的符号,这会引发相同的错误.应该有一个更好的选择,而不是替换字符. …