LINQ to XML offre un moyen plus pratique de lire et d'écrire du XML. Dans les commentaires des articles précédents, les amis ont toujours mentionné, pourquoi n'utilisez-vous pas Linq to XML ? Il est maintenant temps, Linq to XML apparaît.
L'espace de noms System.Xml.Linq dans .Net prend en charge Linq to XML. XDocument, XElement, XText et XAttribute dans cet espace de noms fournissent des méthodes clés pour lire et écrire des documents XML.
1. Utilisez Linq to XML pour écrire du XML :
Utilisez le constructeur de XDocument pour construire un objet de document XML ; utilisez l'objet XElement pour construire un élément de nœud XML ; , utilisez Le constructeur XAttribute peut construire les attributs de l'élément ; utilisez le constructeur XText pour construire le texte dans le nœud.
L'exemple de code suivant :
class Program { static void Main(string[] args) { var xDoc = new XDocument(new XElement( "root", new XElement("dog", new XText("dog said black is a beautify color"), new XAttribute("color", "black")), new XElement("cat"), new XElement("pig", "pig is great"))); //xDoc输出xml的encoding是系统默认编码,对于简体中文操作系统是gb2312 //默认是缩进格式化的xml,而无须格式化设置 xDoc.Save(Console.Out); Console.Read(); } }
Le code ci-dessus affichera le code XML suivant :
<?xml version="1.0" encoding="gb2312"?> <root> <dog color="black">dog said black is a beautify color</dog> <cat /> <pig>pig is great</pig> </root>
On voit que Linq to XML est bien plus pratique que XmlDocument et XmlWriter.
2. Utilisez Linq to XML pour lire XML
Linq provient de la collection. L'objet de requête, la collection en linq to xml est obtenue via Elements(), Elements(string name) de XElement et plusieurs méthodes surchargées de Descendants, DescendantsAndSelf, Ancestors et AncestorsAndSelf.
Après avoir obtenu la collection XElement, vous pouvez obtenir la valeur d'attribut de l'élément via la méthode Attribute(string name) de XElement et obtenir la valeur texte du nœud via l'attribut Value de XElement ; linq pour interroger et filtrer facilement. Après avoir trié
ou le XML dans l'exemple ci-dessus, nous devons lire tous les points d'octet de la racine et les imprimer, comme suit :
<🎜. >
class Program { static void Main(string[] args) { var xDoc = new XDocument(new XElement( "root", new XElement("dog", new XText("dog said black is a beautify color"), new XAttribute("color", "black")), new XElement("cat"), new XElement("pig", "pig is great"))); //xDoc输出xml的encoding是系统默认编码,对于简体中文操作系统是gb2312 //默认是缩进格式化的xml,而无须格式化设置 xDoc.Save(Console.Out); Console.WriteLine(); var query = from item in xDoc.Element( "root").Elements() select new { TypeName = item.Name, Saying = item.Value, Color = item.Attribute("color") == null?(string)null:item.Attribute("color").Value }; foreach (var item in query) { Console.WriteLine("{0} 's color is {1},{0} said {2}",item.TypeName,item.Color??"Unknown",item.Saying??"nothing"); } Console.Read(); } }
3. Application simple Linq to XML
Exigences d'application : Lisez le RSS du blog. park, puis affichez les dernières informations sur le blog de la page 10Points d'implémentation : charger XML via la méthode Load static de >Le développement de C# facilite la lecture et l'écriture de XML.
Essais connexes sur le traitement C# 3. Utilisez Linq to XML pour accéder à XML
4 Définir des documents XML au format fixe via XmlScheme
<%@ Page Language="C#" AutoEventWireup="true" %> <script runat="server"> protected override void OnLoad(EventArgs e) { //实际应用,通过读取博客园的RSS生成Html代码显示最新的博客列表 //使用XDocument的Load静态方法载入Xml //玉开技术博客 http://www.php.cn/ var rssXDoc = XDocument.Load("http://www.cnblogs.com/rss"); //使用linq to xml查询前10条新博客 var queryBlogs = (from blog in rssXDoc.Descendants("item") select new { Title = blog.Element("title").Value, Url = blog.Element("link").Value, PostTime = DateTime.Parse(blog.Element("pubDate").Value) }).Take(20); repeaterBlogs.DataSource = queryBlogs; repeaterBlogs.DataBind(); base.OnLoad(e); } </script> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Linq to Xml 实例</title> </head> <body> <ol> <asp:Repeater ID="repeaterBlogs" EnableViewState="false" runat="server"> <ItemTemplate> <li><span style="float: right"> <%#Eval("PostTime") %></span><a href="<%#Eval("Url") %>"><%#Eval("Title") %></a></li> </ItemTemplate> </asp:Repeater> </ol> </body> </html>
6. Via Rechercher des nœuds XML
7. Convertir le format XML via