栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在C#中处理XML

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在C#中处理XML

C#2.0中的主要读写方法是通过 Xmldocument
类完成的。您可以通过接受的XmlReader将大多数设置直接加载到Xmldocument中。

直接加载XML

Xmldocument document = new Xmldocument();document.LoadXml("<People><Person Name='Nick' /><Person Name='Joe' /></People>");

从文件加载XML

Xmldocument document = new Xmldocument();document.Load(@"C:PathToxmldoc.xml");// Or using an XmlReader/XmlTextReaderXmlReader reader = XmlReader.Create(@"C:PathToxmldoc.xml");document.Load(reader);

我发现读取XML文档最简单/最快的方法是使用XPath。

使用XPath读取XML文档(使用允许我们进行编辑的Xmldocument)

Xmldocument document = new Xmldocument();document.LoadXml("<People><Person Name='Nick' /><Person Name='Joe' /></People>");// Select a single nodeXmlNode node = document.SelectSingleNode("/People/Person[@Name = 'Nick']");// Select a list of nodesXmlNodeList nodes = document.SelectNodes("/People/Person");

如果您需要使用XSD文档来验证XML文档,则可以使用它。

根据XSD模式验证XML文档

XmlReaderSettings settings = new XmlReaderSettings();settings.ValidateType = ValidationType.Schema;settings.Schemas.Add("", pathToXsd); // targetNamespace, pathToXsdXmlReader reader = XmlReader.Create(pathToXml, settings);Xmldocument document = new Xmldocument();try {    document.Load(reader);} catch (XmlSchemaValidationException ex) { Trace.WriteLine(ex.Message); }

在每个节点上针对XSD验证XML(更新1)

XmlReaderSettings settings = new XmlReaderSettings();settings.ValidateType = ValidationType.Schema;settings.Schemas.Add("", pathToXsd); // targetNamespace, pathToXsdsettings.ValidationEventHandler += new ValidationEventHandler(settings_ValidationEventHandler);XmlReader reader = XmlReader.Create(pathToXml, settings);while (reader.Read()) { }private void settings_ValidationEventHandler(object sender, ValidationEventArgs args){    // e.Message, e.Severity (warning, error), e.Error    // or you can access the reader if you have access to it    // reader.LineNumber, reader.LinePosition.. etc}

编写XML文档(手动)

XmlWriter writer = XmlWriter.Create(pathToOutput);writer.WriteStartdocument();writer.WriteStartElement("People");writer.WriteStartElement("Person");writer.WriteAttributeString("Name", "Nick");writer.WriteEndElement();writer.WriteStartElement("Person");writer.WriteStartAttribute("Name");writer.Writevalue("Nick");writer.WriteEndAttribute();writer.WriteEndElement();writer.WriteEndElement();writer.WriteEnddocument();writer.Flush();

(更新1)

在.NET
3.5中,您可以使用Xdocument执行类似的任务。但是,不同之处在于,您可以执行Linq查询来选择所需的确切数据。通过添加对象初始化程序,您可以创建一个查询,甚至可以在查询本身中返回自己定义的对象。

    Xdocument doc = Xdocument.Load(pathToXml);    List<Person> people = (from xnode in doc.Element("People").Elements("Person") select new Person {     Name = xnode.Attribute("Name").Value }).ToList();

(更新2)

.NET 3.5中的一种不错的方法是在下面使用Xdocument创建XML。这使代码以与所需输出相似的模式显示。

Xdocument doc =        new Xdocument(   new XDeclaration("1.0", Encoding.UTF8.HeaderName, String.Empty),   new XComment("Xml document"),   new XElement("catalog",         new XElement("book", new XAttribute("id", "bk001"),    new XElement("title", "Book Title")         )   )        );

创造

<!--Xml document--><catalog>  <book id="bk001">    <title>Book Title</title>  </book></catalog>

其他所有方法都失败了,您可以查看这篇MSDN文章,其中包含许多我在这里讨论过的示例以及更多内容。
http://msdn.microsoft.com/en-
us/library/aa468556.aspx



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416868.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号