WPF读写文件
一、利用StreamReader 与 StreamWriter读写文件
1.读文件
1 StreamReader sr = new StreamReader(@"D:\JointIn.txt"); 2 string sLine = ""; 3 while(!sr.EndOfStream) 4 { 5 sLine += sr.ReadLine(); 6 } 7 Console.WriteLine(sLine); 8 sr.Close();
2.写文件
1 StreamWriter sw = new StreamWriter(@"D:\JointOut.txt",true);//追加 2 sw.WriteLine("Hello World"); 3 sw.Flush(); 4 sw.Close();
二、读取XML节点
string XExamVideoConfigPath = @"D:\Test\VideoConfig.xml"; XmlDocument doc = new XmlDocument(); doc.Load(XExamVideoConfigPath); string nodePath = "/Configuration/Node/Value[@index=1]"; var videoUrlNode = doc.SelectSingleNode(nodePath); videoUrlNode.InnerText = "rtsp://admin:a12345678@172.24.14.64:554"; doc.Save(XExamVideoConfigPath);
var aiNode = doc .Descendants("Group") .FirstOrDefault(n => string.Equals((string)n.Attribute("Package"), "DR_AI", StringComparison.OrdinalIgnoreCase) && string.Equals((string)n.Attribute("Module"), "DR_AI", StringComparison.OrdinalIgnoreCase));
XElement.Descendants(XName name)方法的作用是:以“深度优先”的顺序,递归地查找并返回当前 XML 元素(XElement)的所有下级元素(即“子孙”元素),并且只返回那些具有指定名称的元素。- XElement
.Elements(XName name):只查找直接子级的元素。
三、对比

1. XElement(XML 元素)
是什么:XML 文档的基本构建块,表示一个标签及其内容。
特点:
-
有名称(标签名)
-
可以有值(文本内容)
-
可以包含其他节点(子元素、文本、注释等)
-
可以拥有属性
<Book genre="编程">C# 入门</Book> <!-- ↑ 这是一个 XElement,名称为 "Book" -->
XElement book = new XElement("Book", "C# 入门"); book.Add(new XAttribute("genre", "编程")); // 访问元素值 string value = book.Value; // "C# 入门" // 访问元素名称 XName name = book.Name; // "Book"
2. XNode(XML 节点)
是什么:XML 文档中各种类型节点的抽象基类。
包含的类型:
-
XElement- 元素节点 -
XText- 文本节点 -
XComment- 注释节点 -
XDocument- 文档节点 -
XProcessingInstruction- 处理指令 -
等等
特点:
-
抽象类,不能直接实例化
-
定义了节点在 XML 树中的位置关系
-
提供导航方法(如
NextNode,PreviousNode)
<Book><!-- 注释 -->C# 入门</Book>
这里包含:
-
1个
XElement节点 (<Book>) -
1个
XComment节点 (<!-- 注释 -->) -
1个
XText节点 (C# 入门)
3. XAttribute(XML 属性)
是什么:附加在元素上的名值对,用于描述元素的额外信息。
特点:
-
有名称和值
-
不属于 XML 树结构的一部分
-
没有子节点
-
顺序通常不重要
<Book genre="编程" price="50.00">C# 入门</Book> <!-- ↑ "genre" 和 "price" 是 XAttribute -->
XElement book = new XElement("Book", "C# 入门"); book.SetAttributeValue("genre", "编程"); // 添加属性 // 获取属性值 string genre = book.Attribute("genre")?.Value; // "编程"
浙公网安备 33010602011771号