如何读取远程XML?
由于刚刚学习C#,只是懂点概念些的东西。但比较心急想知道如何实现这个功能。
情况是这样:xml文件是十只股票的变化数据,由于股价数据是实时变化的,那么就需要不断地读取,与最后一次的数据比较,如果有不同就入库。数据量并不大:股票代码 + 实时股价 + 变化时间
整个流程就这样:读取解析xml -> [与最后一次读取的数据进行比较,如果无变动就继续读取监视] ->写入数据库!
由于数据需要即时的,所以希望程序运行高效、快速。
例如:http://www.abc.com/data/update.xml
格式:
<?xml version="1.0" encoding="UTF-8" ?>
<Stock nuber="10" DateTime="2009-5-29">
<data>
<U Uid="600191" Changes="12.50" DateTime="2009-5-29 10:43" />
<U Uid="600543" Changes="12.50" DateTime="2009-5-29 10:43" />
<U Uid="600562" Changes="12.50" DateTime="2009-5-29 10:43" />
<U Uid="600265" Changes="12.50" DateTime="2009-5-29 10:43" />
...
..
.
</data>
</Stock>
[解决办法]
/// <summary> /// XmlFiles 的摘要说明。 /// </summary> public class XmlFiles:XmlDocument { #region 字段与属性 private string _xmlFileName; public string XmlFileName { set{_xmlFileName = value;} get{return _xmlFileName;} } #endregion public XmlFiles(string xmlFile) { XmlFileName = xmlFile; this.Load(xmlFile); } /// <summary> /// 给定一个节点的xPath表达式并返回一个节点 /// </summary> /// <param name="node"></param> /// <returns></returns> public XmlNode FindNode(string xPath) { XmlNode xmlNode = this.SelectSingleNode(xPath); return xmlNode; } /// <summary> /// 给定一个节点的xPath表达式返回其值 /// </summary> /// <param name="xPath"></param> /// <returns></returns> public string GetNodeValue(string xPath) { XmlNode xmlNode = this.SelectSingleNode(xPath); return xmlNode.InnerText; } /// <summary> /// 给定一个节点的表达式返回此节点下的孩子节点列表 /// </summary> /// <param name="xPath"></param> /// <returns></returns> public XmlNodeList GetNodeList(string xPath) { XmlNodeList nodeList = this.SelectSingleNode(xPath).ChildNodes; return nodeList; } }
[解决办法]
用XmlDataDocument中DataSet属性的ReadXmlSchema读取Xml文档,此时,Xml文档便已经以DataSet的形式加载到XmlDtaDocument.DataSet属性中了,然后就可以使用DataSet的各种操作技术进行操作了。