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 }
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> { }; }
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 测试时,需要遇到文件权限问题,抛出异常。
原因:服务器上拷贝的文件,有对应的权限。在本机新建对应文件夹和文件就可以解压缩了。
编辑服务器上文件的权限,应该可以解决下面的异常(未实际操作)