该XML文件是用 DataSet.WriteXml()方法生成的,所以本来是可以直接用
DataSet.ReadXml() 方法来还原成 DataSet, 然后再从 DataSet 中搜索,
但因为数据量特别大,如果用 ReadXml 的方法将资料全部读入 DataSet,内存耗用太大,所以
只能转换思路,暂时想的是用 XmlReader 之类的方法来从 Xml 文件中搜索数据,但
显然这种方法过于麻烦,所以想请问有没有更简单的方法.TKS注:请不要问诸如“为什么不从数据库中直接搜索”之类的,因为该项目是不连接数据库的
,所有的数据都已被转换为 xml 文件
DataSet.ReadXml() 方法来还原成 DataSet, 然后再从 DataSet 中搜索,
但因为数据量特别大,如果用 ReadXml 的方法将资料全部读入 DataSet,内存耗用太大,所以
只能转换思路,暂时想的是用 XmlReader 之类的方法来从 Xml 文件中搜索数据,但
显然这种方法过于麻烦,所以想请问有没有更简单的方法.TKS注:请不要问诸如“为什么不从数据库中直接搜索”之类的,因为该项目是不连接数据库的
,所有的数据都已被转换为 xml 文件
XmlNodeList quNodeList = doc.SelectNodes("/Context/Qu[child::ParentUniqueID = '0' and child::Class_UniqueID='" + exerciseScoreList[i].Class_UniqueID + "']");
----------------
你的 doc 应该是是一个 XmlDocument 实例吧,它需要先执行 XmlDocument.Load()后才能执行 SelectNodes, 所以实际上还是将资料全部加载到内存中了jeremyyang824
----------------------
非常感谢你的回答,XPathNavigator应该是不错的选择,一定试试,呵呵
还有其它好的方案吗
<?xml version="1.0" encoding="utf-8" ?>
<root>
<sm>
<zsxm>001</zsxm>
<zspm>10098</zspm>
<zspm_mc>销售不动产</zspm_mc>
</sm>
<sm>
<zsxm>002</zsxm>
<zspm>10099</zspm>
<zspm_mc>销售无形资产</zspm_mc>
</sm>
</root>举例:获取税种代码为001税目代码为10098的税目名称XmlDocument XmlDoc_sm = new XmlDocument();
XmlDoc_sm.Load(Server.MapPath("sm.xml"));
string s = GetNodeText(XmlDoc_sm,"//sm[zsxm=001 and zspm=10098]","zspm_mc");//根据xpath返回节点对象,然后根据nodename返回该节点的值
public string GetNodeText(XmlDocument xmlDoc,string xpath,string nodename)
{
string result="";
XmlNode nd = xmlDoc.SelectSingleNode(xpath);
if(nd!=null)
{
XmlNode cd = nd.SelectSingleNode(nodename);
if(cd!=null)
result = cd.InnerText.Trim();
}
return result;
}
http://topic.csdn.net/t/20040320/13/2864996.html