C# xml

public static string GetValue(string key, string FileName)
        {
            string XPath = "/appSettings/add[@key='?']";
            XmlDocument membershipConfig = new XmlDocument();

            membershipConfig.Load((HttpContext.Current.Server.MapPath(FileName)));
            XmlNode addKey = membershipConfig.SelectSingleNode((XPath.Replace("?", key)));
            if (addKey == null)
            {
                throw new ArgumentException("没有找到<add key='" + key + "' value=.../>的配置节");
            }
            return addKey.Attributes["value"].InnerText;

        }


 

03-23
<think>好的,用户想了解C#中处理XML的示例和教程。首先,我需要回忆C#中常用的XML处理方式。记得有XmlDocument、XDocument、XmlSerializer等类库。可能需要分基础操作和进阶功能来组织内容。 首先,基础部分应该包括如何读取和创建XML文档。例如,使用XmlDocument加载文件,选择节点,或者用XDocument的LINQ语法更便捷。需要给出代码示例,比如读取节点值或者创建新元素。 然后,可能需要介绍XPath查询,这是处理XML的重要部分,用户可能需要进行复杂的查询操作。比如使用SelectNodes或SelectSingleNode方法,并展示XPath表达式的使用。 接下来是XML的序列化和反序列化,这是常见的数据处理需求。用XmlSerializer将对象转为XML或反向操作,这部分需要示例代码说明如何定义类和序列化过程。 进阶功能可能包括XSLT转换,虽然现在使用可能不如以前多,但仍有必要提及。另外,XML验证,比如根据Schema验证文档结构,这也是关键点,确保生成的XML符合规范。 还要考虑用户的实际应用场景,比如配置文件、Web服务的数据交换等,可以举例说明在这些情况下如何使用C#处理XML。 需要检查是否有遗漏的重要功能,比如使用Linq to XML,这是比较现代的方式,应该强调它的简洁性。另外,处理大型XML文件时的注意事项,比如使用XmlReader进行流式读取,避免内存问题。 最后,确保提供的代码示例正确,符合C#语法,并注释关键步骤。同时,参考资料部分要正确引用微软文档和W3Schools,确保用户有进一步学习的资源。 可能需要用户会遇到的问题,比如命名空间处理、特殊字符转义等,但在基础示例中可能暂时不深入。保持回答结构清晰,分点说明,让用户逐步学习。</think>### C#XML 处理功能及示例 #### 1. **基础操作:XML 文档的读取与创建** - **使用 `XmlDocument` 类** 示例:读取 XML 文件并获取节点值 ```csharp XmlDocument doc = new XmlDocument(); doc.Load("data.xml"); XmlNode node = doc.SelectSingleNode("/root/book/title"); Console.WriteLine(node.InnerText); ``` - **使用 `XDocument`(LINQ to XML)** 示例:创建新 XML 文档 ```csharp XDocument doc = new XDocument( new XElement("root", new XElement("book", new XAttribute("id", "1"), new XElement("title", "C# Guide") ) ) ); doc.Save("output.xml"); ``` #### 2. **XPath 查询与节点操作** - **通过 XPath 定位节点** 示例:查询所有价格大于 20 的书籍 ```csharp XmlNodeList nodes = doc.SelectNodes("//book[price > 20]"); foreach (XmlNode node in nodes) { Console.WriteLine(node["title"].InnerText); } ``` #### 3. **序列化与反序列化** - **对象转 XML(序列化)** 示例:将类实例保存为 XML ```csharp public class Book { public string Title { get; set; } public decimal Price { get; set; } } Book book = new Book { Title = "C# Basics", Price = 29.99m }; XmlSerializer serializer = new XmlSerializer(typeof(Book)); using (TextWriter writer = new StreamWriter("book.xml")) { serializer.Serialize(writer, book); } ``` - **XML 转对象(反序列化)** ```csharp using (TextReader reader = new StreamReader("book.xml")) { Book result = (Book)serializer.Deserialize(reader); } ``` #### 4. **进阶功能** - **XSLT 转换** 示例:将 XML 转换为 HTML ```csharp XslCompiledTransform transform = new XslCompiledTransform(); transform.Load("style.xslt"); transform.Transform("input.xml", "output.html"); ``` - **XML 架构验证** 示例:根据 XSD 验证 XML ```csharp XmlReaderSettings settings = new XmlReaderSettings(); settings.Schemas.Add("", "schema.xsd"); settings.ValidationType = ValidationType.Schema; using (XmlReader reader = XmlReader.Create("data.xml", settings)) { while (reader.Read()) { } // 验证在此过程中自动触发 } ``` #### 5. **应用场景** - **配置文件**:ASP.NET 的 `Web.config` 或桌面应用的 XML 配置管理。 - **数据交换**:与 Web 服务(如 SOAP)交互时,序列化请求/响应数据[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值