还是取XML问题~~~~

yinsuxia 2010-11-18 03:16:44
我有一个hashtable,还有一个XML文件,XML文件大致如下:

<finfo>
<longphone>10665234</longphone>
<receivequery>ee29_493_20004_1_1245789865321245</receivequery>
<block_english>10086</block_english>
<block_english>10666600</block_english>
<block_chinese>我的网</block_chinese>
<block_chinese>宣传</block_chinese>
<block_number>10086</block_number>
<block_number>10658166</block_number>
</finfo>
<finfo>
<longphone>13411885227</longphone>
<receivequery>GTS*493*GTSBOXMTK*1245789865321245</receivequery>
<block_english>10086</block_english>
<block_chinese>健康互动</block_chinese>
<block_number>10086</block_number>

</finfo>



现在我想根据hashtable中的key去到XML中找数据,并读出来,hashtable中存放的数据就是XML中的longphone和receivequery节点下的数据,请问各位,我要怎么才能找到呢?
...全文
125 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
蝶恋花雨 2010-11-18
  • 打赏
  • 举报
回复
然后再把hashtable 里面的值跟 Response.Write(xe.SelectSingleNode("longphone").InnerText);
Response.Write(xe.SelectSingleNode("receivequery").InnerText);
这些比较
dasheen919 2010-11-18
  • 打赏
  • 举报
回复
你需要的只是编写一个XML文件读取类(最好再有一个对应的实体类),建议查询MSDN搜索XmlDocument相关,XML文件的读取方式很多,也很简单,下面结合你的XML结构写个简单的例子.

XmlDocument XmlFile = new XmlDocument();
XmlFile.Load(xxx); //xxx是你的XML文件路径

//遍历节点,XML文件读取常用的方式
foreach(XmlNode ChildNode in XmlFile.ChildNodes)
{
//首先是第一层的finfo
foreach(XmlNode SubNode in ChildNode.ChildNodes)
{
//最内层
if(SubNode.Name == xxx) //xxx表示你要找的节点名字,如longphone、receivequery
{
//你要执行的操作
//SubNode.InnerXml或InnerText就是后面的值10665234
}
}
}

不过你的XML结构设计的很不合理,读取时会发觉很不爽,可以考虑属性+子节点或者再多一层的结构。
蝶恋花雨 2010-11-18
  • 打赏
  • 举报
回复
string resHtml = @"
<finfo> <longphone>10665234 </longphone>
<receivequery>ee29_493_20004_1_1245789865321245 </receivequery>
<block_english>10086 </block_english>
<block_english>10666600 </block_english>
<block_chinese>我的网 </block_chinese>
<block_chinese>宣传 </block_chinese>
<block_number>10086 </block_number>
<block_number>10658166 </block_number>
</finfo> ";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(resHtml);
XmlNodeList xnl = xmlDoc.SelectNodes("/finfo");
foreach (XmlNode linkNode in xnl)
{
XmlElement xe = (XmlElement)linkNode;//将子节点类型转换为XmlElement类型
Response.Write(xe.SelectSingleNode("longphone").InnerText);
Response.Write(xe.SelectSingleNode("receivequery").InnerText);
}
fellowcheng 2010-11-18
  • 打赏
  • 举报
回复
            string strKey = "10665234";
XDocument xDom = XDocument.Parse(@"<finfos><finfo>
<longphone>10665234</longphone>
<receivequery>ee29_493_20004_1_1245789865321245 </receivequery>
<block_english>10086 </block_english>
<block_english>10666600 </block_english>
<block_chinese>我的网 </block_chinese>
<block_chinese>宣传 </block_chinese>
<block_number>10086 </block_number>
<block_number>10658166 </block_number>
</finfo>
<finfo>
<longphone>13411885227 </longphone>
<receivequery>GTS*493*GTSBOXMTK*1245789865321245 </receivequery>
<block_english>10086 </block_english>
<block_chinese>健康互动 </block_chinese>
<block_number>10086 </block_number>
</finfo></finfos>");
var finfo = xDom.Descendants("longphone").Where(t => t.Value == strKey).FirstOrDefault().Parent;
if (finfo != null) {
XElement xElement = finfo;
}
yinsuxia 2010-11-18
  • 打赏
  • 举报
回复
yinsuxia 2010-11-18
  • 打赏
  • 举报
回复
顶啊·~~沉得好快啊
#blackheart 2010-11-18
  • 打赏
  • 举报
回复
反序列化后找
yinsuxia 2010-11-18
  • 打赏
  • 举报
回复
顶~~怎么没人回答啊??

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧