职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1428|回复: 2

xml操作(及tfp读取操作)

[复制链接]
蓝色梦幻 发表于 2008-5-14 14:24 | 显示全部楼层 |阅读模式
分为以上几个部分:
1.建立xml(看以下实例)
private void InitNewsText(ArrayList aa)//这种例子是传入一个Arraylist做为参数,代表了xml赋值时的每个节点的不同值做为一个类的一个集合,这里的节点是没有属性值的:
        {
            XmlDocument doc = new XmlDocument();
            doc.AppendChild(doc.CreateXmlDeclaration(\"1.0\", \"GB2312\", null));
            XmlElement element1 = doc.CreateElement(\"iTV\");
            XmlNode node = doc.AppendChild(element1);

            //初始化
            for (int i = 0; i < 6; i++)
            {
                ScrollNews2 ss = (ScrollNews2)aa;
                if (i < aa.Count)
                {
                    XmlElement element = doc.CreateElement(\"News\");
                    node = node.AppendChild(element);
                    element = doc.CreateElement(\"Title\");
                    element.AppendChild(doc.CreateTextNode(ss.Title));
                    node.AppendChild(element);

                    element = doc.CreateElement(\"Content\");
                    element.AppendChild(doc.CreateTextNode(ss.Content));
                    node.AppendChild(element);

                    element = doc.CreateElement(\"Column\");
                    element.AppendChild(doc.CreateTextNode(ss.Column));
                    node.AppendChild(element);

                    element = doc.CreateElement(\"ublishTime\");
                    element.AppendChild(doc.CreateTextNode(ss.Publishtime.ToString(\"yyyyMMddHHmmss\")));
                    node.AppendChild(element);

                    element = doc.CreateElement(\"URL\");
                    element.AppendChild(doc.CreateTextNode(ss.Url));
                    node.AppendChild(element);
                }
                else
                {
                    XmlElement element = doc.CreateElement(\"News\");
                    node = node.AppendChild(element);
                    element = doc.CreateElement(\"Title\");
                    //element.AppendChild(doc.CreateTextNode(ss.Title));
                    node.AppendChild(element);

                    element = doc.CreateElement(\"Content\");
                    element.AppendChild(doc.CreateTextNode(ss.Content));
                    node.AppendChild(element);

                    element = doc.CreateElement(\"Column\");
                    //element.AppendChild(doc.CreateTextNode(ss.Column));
                    node.AppendChild(element);

                    element = doc.CreateElement(\"ublishTime\");
                    //element.AppendChild(doc.CreateTextNode(ss.Publishtime.ToString(\"yyyyMMddHHmmss\")));
                    node.AppendChild(element);

                    element = doc.CreateElement(\"URL\");
                    //element.AppendChild(doc.CreateTextNode(ss.Url));
                    node.AppendChild(element);
                }
            }
//这里是ftp操作,
            ftp.Put(Encoding.GetEncoding(\"GB2312\").GetBytes(doc.OuterXml), newstext + \".sending\");
            try { ftp.Delete(newstext); }
            catch { }
            ftp.Rename(newstext + \".sending\", newstext);
        }
xml格式诸如:
<x>
<y>
<y1></y1>
</y>
<y>
<y1></y1>
</y>
</x>
另一种:是有属性的xml诸如:
代码例子:
private void InitNewsDisplayUrl(NewsDisplay display)//nodeElem.SetAttribute( \"attr \", \"attrValue \");//添加属性节点
        {

            string[] urls ={ display.LinkUrl1, display.LinkUrl2, display.LinkUrl3 };
            string[] names ={ display.PicName1, display.PicName2, display.PicName3 };
            XmlDocument doc = new XmlDocument();
            doc.AppendChild(doc.CreateXmlDeclaration(\"1.0\", \"GB2312\", null));
            XmlElement element = doc.CreateElement(\"root\");
            XmlNode node = doc.AppendChild(element);

            //初始化
            for (int i = 1; i < 5; i++)//四个频道
            {
                element = doc.CreateElement(\"channel\");
                node = doc.DocumentElement .AppendChild(element);
                XmlAttribute newatt = doc.CreateAttribute(\"id\");
                newatt.InnerText = i.ToString();
                element.Attributes.Append(newatt);
                //三个连接
                for (int j = 0; j < 3; j++)
                {
                    if (display.ID.ToString() == i.ToString())
                    {
                        element = doc.CreateElement(\"item\");
                        node = doc.DocumentElement.AppendChild(element);
                        newatt = doc.CreateAttribute(\"picName\");
                        newatt.InnerText =names[j];
                        element.Attributes.Append(newatt);
                        newatt = doc.CreateAttribute(\"linkUr\");
                        newatt.InnerText =urls[j];
                        element.Attributes.Append(newatt);
                    }
                    else
                    {
                        element = doc.CreateElement(\"item\");
                        node = doc.DocumentElement.AppendChild(element);
                        newatt = doc.CreateAttribute(\"picName\");
                        newatt.InnerText = \"\";
                        element.Attributes.Append(newatt);
                        newatt = doc.CreateAttribute(\"linkUr\");
                        newatt.InnerText = \"\";
                        element.Attributes.Append(newatt);
                    }
                }
            }
            ftp.Put(Encoding.GetEncoding(\"GB2312\").GetBytes(doc.OuterXml), newsDisplay );
         }
      xml例子诸如:
<x>
<y id=\"\">
<y1 name=\"\" url=\"\">
</y>
<y id=\"\">
<y1 name=\"\" url=\"\">
</y>

</x>

2读写xml
//第一种是针对有属性的
string[] urls ={ display.LinkUrl1, display.LinkUrl2, display.LinkUrl3 };
                string[] names ={ display.PicName1, display.PicName2, display.PicName3 };
                XmlNode nodeone = doc.SelectSingleNode(\"root\");
                foreach (XmlNode node in nodeone.ChildNodes)
                {
                       if (node.Attributes[0].Value == display.ID.ToString())
                       {
                           for (int i = 0; i < node.ChildNodes.Count; i++)
                           {
                                  node.ChildNodes.Attributes[0].Value = names;
                                  node.ChildNodes.Attributes[1].Value = urls;
                           }
                       }
                     
                    }
//这种针对没有属性的
XmlNodeList nodelist = doc.SelectNodes(\"/iTV/News\");
                if(nodelist .Count >0)
                {
                   for(int i=0;i<nodelist .Count ;i++)
                   {
                        //hasNode = true;
                       if (i < aa.Count)
                       {
                           ScrollNews2 ss = (ScrollNews2)aa;
                           nodelist.SelectSingleNode(\"Title\").InnerText = ss.Title;
                           nodelist.SelectSingleNode(\"Content\").InnerText = ss.Content;
                           nodelist.SelectSingleNode(\"Column\").InnerText = ss.Column;
                           nodelist.SelectSingleNode(\"ublishTime\").InnerText = ss.Publishtime.ToString(\"yyyyMMddHHmmss\");
                           nodelist.SelectSingleNode(\"URL\").InnerText = ss.Url;
                       }
                     
                   }
3ftp操作xml,涉及到一个组件.dll
下载地址:

具体操作:包括ftp的连接和断开,这些都不详说了,有关操作xml的部分
 楼主| 蓝色梦幻 发表于 2008-5-14 14:37 | 显示全部楼层

(续)上

不想文章会自己跳走(所以只好接着写续了)
组件名称:edtftpnet-1.1.8.dll,自已去网上下吧
xml的有关操作代码
XmlDocument doc = new XmlDocument();
                if (HttpRuntime.Cache["newstext.xml"] == null)
                {
                    byte[] bytes = ftp.Get(NewsTextFileName);
                    if (bytes.Length == 0) { InitNewsText(aa); return; };
                    doc.LoadXml(Encoding.GetEncoding("GB2312").GetString(bytes));
                    HttpRuntime.Cache.Add("newstext.xml", doc, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
                }
                else
                {
                    doc = (XmlDocument)HttpRuntime.Cache["newstext.xml"];
                }
 楼主| 蓝色梦幻 发表于 2009-2-18 13:05 | 显示全部楼层
再续xml,多属性代码:
今天又写xml,好在有以上的文章做参考,再帖有关代码:
public string GetPropMondelInfoXML()
        {
            DataTable dt = 有关值;
            XmlDocument doc = new XmlDocument();
            doc.AppendChild(doc.CreateXmlDeclaration("1.0", "GB2312", null));
            XmlElement element = doc.CreateElement("root");
            XmlNode node = doc.AppendChild(element);
            element = doc.CreateElement("one");
            node = doc.DocumentElement.AppendChild(element);
            //初始化
            for (int i = 0; i < dt.Rows.Count; i++)
            {

                element = doc.CreateElement("two");
                node = doc.DocumentElement.FirstChild.AppendChild(element);
               
                XmlAttribute prop = doc.CreateAttribute("表字段值");
                prop.InnerText = dt.Rows["表字段值"].ToString();
                element.Attributes.Append(prop);

                prop = doc.CreateAttribute("表字段值");
                prop.InnerText = dt.Rows["表字段值"].ToString();
                element.Attributes.Append(prop);

                prop = doc.CreateAttribute("表字段值");
                prop.InnerText = dt.Rows["表字段值"].ToString();
                element.Attributes.Append(prop);

                prop = doc.CreateAttribute("表字段值");
                prop.InnerText = dt.Rows["表字段值"].ToString();
                element.Attributes.Append(prop);

              }
            string info = doc.InnerXml;
            return info;
        }
这次生成的形式状如:
<root>
<x>
     <y y1="" z="" xx="">
     <y y1="" z="" xx="">
</x>
</root>
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-29 14:47 , Processed in 0.122202 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表