C# 基础学习笔记

1.XML解析

  当xml文件中出现多个<ListItem>时候,如果直接获得这个标签的InnerText,会得到三个标签内部全部的数据。

<?xml version="1.0" encoding="utf-8" ?>
<XmlConfig> 
  <ConfigTable>
    <Name> 万联6</Name>
    <Path>D:\文件\w数据.rar</Path>
    <TargetPath>D:\sS\0008-hr23h\</TargetPath>
    <SystemType>万联</SystemType>
    <ListItem>ipogh*.txt@ipogh%sMMDD%.txt</ListItem>
    <ListItem>gh*.dbf@gh%sYYYYMMDD%.dbf</ListItem>
    <ListItem>sjsdz*.dbf@sjsdz%sMMDD%.dbf</ListItem>
  </ConfigTable> 
  <ConfigTable>
    <Name> 万联</Name>
    <Path>D:\文件\数据.rar</Path>
    <TargetPath>D:\文件\008-hr23h\</TargetPath>
    <SystemType>万联s</SystemType>
    <ListItem>ipogh*.txt@ipogh%sMMDD%.txt</ListItem>
    <ListItem>gh*.dbf@gh%sYYYYMMDD%.dbf</ListItem>
    <ListItem>sjsdz*.dbf@sjsdz%sMMDD%.dbf</ListItem>
  </ConfigTable> 
</XmlConfig>

网上找了些,不是想要的。看了官网的api,写了方法测试。

 1 private static void ParseXML()
 2         {
 3             XmlDocument xmlDoc = new XmlDocument();
 4             xmlDoc.Load("D:/devFile/name.xml");
 5             XmlNodeList nodes = xmlDoc.SelectNodes("XmlConfig/ConfigTable");
 6             List<MultiNode> list = new List<MultiNode>();
 7             foreach (XmlNode node in nodes)
 8             {
 9                 XmlNodeList no = node.ChildNodes;
10                 if (no.Count > 4)
11                 {
12                     MultiNode mulitNode = new MultiNode();
13                     mulitNode.Name = no.Item(0).InnerText;
14                     mulitNode.Path = no.Item(1).InnerText;
15                     mulitNode.SystemType = no.Item(2).InnerText;
16                     mulitNode.TargetPath = no.Item(3).InnerText;
17                     //mulitNode.TargetPath = no.Item(4).InnerText;
18                     //mulitNode.TargetPath = no.Item(5).InnerText;
19 
20                     for (int i = 4; i < no.Count; i++)
21                     {
22                         mulitNode.TurnList.Add(no.Item(i).InnerText);
23                     }
24                     list.Add(mulitNode);
25                 }
26             }
27             System.Diagnostics.Debug.WriteLine(list.Count);
28         }
View Code
    public class MultiNode
    {
        public string Name { get; set; }
        public string Path { get; set; }
        public string TargetPath { get; set; }
        public string SystemType { get; set; }
        public List<string> TurnList = new List<string> { };
    }
View Code

 2.解压缩文件

  

        public static void ZidpFileTest()
        {
            string startPath = "E:\\Test1\\20170329";
            string zipPath = "E:\\Test1\\20170329.rar";
            string extractPath = "E:\\Test2\\20170329";
            if (!File.Exists(zipPath))
            {
                ZipFile.CreateFromDirectory(startPath, zipPath);
            }
            
            if (!Directory.Exists(extractPath))
            {
                ZipFile.ExtractToDirectory(zipPath, extractPath);
            }
        }

  2.1 新建的解决方案是控制台应用,有些程序集没有自动加载进来,需要手动指定。如下,在引用处右键添加指定程序集

   

  2.2 测试时,需要遇到文件权限问题,抛出异常。

    原因:服务器上拷贝的文件,有对应的权限。在本机新建对应文件夹和文件就可以解压缩了。

        编辑服务器上文件的权限,应该可以解决下面的异常(未实际操作)

    

 

 

  

posted @ 2017-03-30 22:28  normalpers  阅读(185)  评论(0编辑  收藏  举报