xml操作(及tfp读取操作)
分为以上几个部分: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[i];
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("PublishTime");
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("PublishTime");
//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[i].Attributes[0].Value = names[i];
node.ChildNodes[i].Attributes[1].Value = urls[i];
}
}
}
//这种针对没有属性的
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[i];
nodelist[i].SelectSingleNode("Title").InnerText = ss.Title;
nodelist[i].SelectSingleNode("Content").InnerText = ss.Content;
nodelist[i].SelectSingleNode("Column").InnerText = ss.Column;
nodelist[i].SelectSingleNode("PublishTime").InnerText = ss.Publishtime.ToString("yyyyMMddHHmmss");
nodelist[i].SelectSingleNode("URL").InnerText = ss.Url;
}
}
3ftp操作xml,涉及到一个组件.dll
下载地址:
具体操作:包括ftp的连接和断开,这些都不详说了,有关操作xml的部分
(续)上
不想文章会自己跳走(所以只好接着写续了)组件名称: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"];
}
页:
[1]