来数一数XML解析成为Dataset数据

              最近在看一些接口,所以目标就是写接口啦,但是我想说的是公司的业务还不曾了解,所以自己先来做一个小小的demo练习吧,主要知道需要和xml有关系的,但是之前从来没有接触过解析xml文件的,在玩撒谎能够搜索啦许多有关解析xml的方法,但是没有适合自己的,所以就提前写一个demo吧,嘿嘿,更加熟悉一些。如果使用C#语言去解析xml文件,可能对于我来说也是一种进步,这里就在友友给提供的小demo的前提下我也来总结一下吧,嘿嘿。

             这里就是简单的做的一个控制台程序,然后把解析以及转换成dataset这样的数据都是在webservice中实现,然后再转换成流的形式接收回来...

复制代码
        static void Main(string[] args)
        {
            string xmldata = "<item>"
                +"<name>dulala</name>"
                +"<pwd>20</pwd>"
                + "<address>北京朝阳</address>"
                +"</item>";
            ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient();
            byte[] buttfer = client.GetWebService(xmldata);
            DataSet resultds = null;
            using (MemoryStream ms = new MemoryStream(buttfer))
            {
                IFormatter im = new BinaryFormatter();
                object obj = im.Deserialize(ms);
                resultds = (DataSet)obj;
            }
        }
复制代码

               这里就是写在webservice中的方法:

复制代码
    public class GetWebService : System.Web.Services.WebService
    {
        public DataTable dt = new DataTable();
        [WebMethod]
        public byte[] GetProductXml(string xmldata)
        {
            #region 获取xml数据,制作键

            DataSet ds1 = new DataSet();
            DataColumn dca = new DataColumn("Username", System.Type.GetType("System.String"));
            dt.Columns.Add(dca);
            DataColumn dcb = new DataColumn("pwd", System.Type.GetType("System.String"));
            dt.Columns.Add(dcb);
            DataColumn dcc = new DataColumn("address", System.Type.GetType("System.String"));
            dt.Columns.Add(dcc);
            #endregion

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xmldata);//解析xml数据
            XmlNode xmlNode = doc.DocumentElement;//文件的节点

            #region 把xml数据添加到sataset
            XmlNode xxx = xmlNode.SelectSingleNode("item");
            string statusCode = string.Empty;
            DataRow dr = dt.NewRow();
            foreach (XmlNode xn in xxx.ChildNodes)
            {
                XmlElement zsl_el = (XmlElement)xn;
                if (xn.LocalName == "Username")
                {
                    dr["Username"] = zsl_el.InnerText;
                }
                if (xn.LocalName == "pwd")
                {
                    dr["pwd"] = zsl_el.InnerText;
                }
                if (xn.LocalName == "address")
                {
                    statusCode = zsl_el.InnerText;
                    dr["address"] = zsl_el.InnerText;
                }
            }
            dt.Rows.Add(dr);
            #endregion

            ds1.Tables.Add(dt);
            byte[] dataBuffer = null;
            if (ds1 != null && ds1.Tables[0].Rows.Count > 0)
            {
                ds1.RemotingFormat = SerializationFormat.Binary;
                IFormatter bf = new BinaryFormatter();

                using (MemoryStream ms = new MemoryStream())
                {
                    bf.Serialize(ms, ds1);
                    dataBuffer = ms.ToArray();
                }
            }
            return dataBuffer;
        }
    }
复制代码

                好啦,代码就展示到这里啦,暂时去实现一下其他的东东哦,嘿嘿

posted @   雪?  阅读(924)  评论(1编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示