LINQ to XML一些基本查询

  /**/ /// /根据元素的名称进行筛选(有命名空间)
             // XNamespace aw = " http://www.adventure-works.com ";
            
// XElement po = XElement.Load("PurchaseOrderInNamespace.xml");
            
// IEnumerable<XElement> items =
            
//     from el in po.Descendants(aw + "ProductName")
            
//     select el;
            
// foreach (XElement prdName in items)
            
//     Console.WriteLine(prdName.Name + ":" + (string)prdName);


            
/**/ /// /链接轴方法
             // XElement purchaseOrders = XElement.Load("PurchaseOrders.xml");
            
// IEnumerable<XElement> names =
            
//     from el in purchaseOrders
            
//         .Elements("PurchaseOrder")
            
//         .Elements("Address")
            
//         .Elements("Name")
            
//     select el;
            
// foreach (XElement e in names)
            
//     Console.WriteLine(e);


            
/**/ /// /链接轴方法,有时,当可能存在或不存在间隔上级时,您希望在特定的元素深度,检索所有的元素
             // XElement root = XElement.Load("Irregular.xml");
            
// IEnumerable<XElement> configParameters =
            
//     root.Elements("Customer").Elements("Config").
            
//     Elements("ConfigParameter");
            
// foreach (XElement cp in configParameters)
            
//     Console.WriteLine(cp);

            
/**/ /// /检索单个子元素
             // XElement po = XElement.Load("PurchaseOrder.xml");
            
// XElement e = po.Element("DeliveryNotes");
            
// Console.WriteLine(e);

            
/**/ /// /检索索性的集合
             // XElement val = new XElement("Value",
            
//     new XAttribute("ID", "1243"),
            
//     new XAttribute("Type", "int"),
            
//     new XAttribute("ConvertableTo", "double"),
            
//     "100");

            
// IEnumerable<XAttribute> listOfAttributes =
            
//     from att in val.Attributes()
            
//     select att;
            
// foreach (XAttribute a in listOfAttributes)
            
//     Console.WriteLine(a);

            
/**/ /// /检索单个属性
             // XElement cust = new XElement("PhoneNumbers",
            
//         new XElement("Phone",
            
//             new XAttribute("type", "home"),
            
//             "555-555-5555"),
            
//         new XElement("Phone",
            
//             new XAttribute("type", "work"),
            
//             "555-555-6666")
            
//     );
            
// IEnumerable<XElement> elList =
            
//     from el in cust.Descendants("Phone")
            
//     select el;
            
// foreach (XElement el in elList)
            
//     Console.WriteLine((string)el.Attribute("type"));

            
/**/ /// /检索属性值
             // XElement root = new XElement("Root",
            
//         new XAttribute("Attr", "abcde")
            
//     );
            
// Console.WriteLine(root);
            
// string str = (string)root.Attribute("Attr");
            
// Console.WriteLine(str);


            
#endregion

            
基本查询 #region  基本查询
            
/**/ /// /查找具有特定属性的元素
             // XElement root = XElement.Load("PurchaseOrder.xml");
            
// IEnumerable<XElement> address =
            
//     from el in root.Elements("Address")
            
//     where (string)el.Attribute("Type") == "Billing"
            
//     select el;
            
// foreach (XElement el in address)
            
//     Console.WriteLine(el);

            
/**/ /// /查找具有特定子元素的元素
             // XElement root = XElement.Load("TestConfig.xml");
            
// IEnumerable<XElement> tests =
            
//     from el in root.Elements("Test")
            
//     where (string)el.Element("CommandLine") == "Examp2.EXE"
            
//     select el;
            
// foreach (XElement el in tests)
            
//     Console.WriteLine((string)el.Attribute("TestId"));


            
// 查询 XDocument 与查询 XElement
//               // Create a simple document and write it to a file
//                         File.WriteAllText("Test.xml", @"<Root>
//                             <Child1>1</Child1>
//                             <Child2>2</Child2>
//                             <Child3>3</Child3>
//                         </Root>");

            
// Console.WriteLine("Querying tree loaded with XElement.Load");
            
// Console.WriteLine("----");
            
// XElement doc = XElement.Load("Test.xml");
            
// IEnumerable<XElement> childList =
            
//     from el in doc.Elements()
            
//     select el;
            
// foreach (XElement e in childList)
            
//     Console.WriteLine(e);


            
// Console.WriteLine("Querying tree loaded with XDocument.Load");
            
// Console.WriteLine("----");
            
// XDocument doc = XDocument.Load("Test.xml");
            
// IEnumerable<XElement> childList =
            
//     from el in doc.Elements()
            
//     select el;
            
// foreach (XElement e in childList)
            
//     Console.WriteLine(e);

//              // 查找具有特定元素名称的子代
//             XElement root = XElement.Parse(@"<root>
//                                                           <para>
//                                                             <r>
//                                                               <t>Some text </t>
//                                                             </r>
//                                                             <n>
//                                                               <r>
//                                                                 <t>that is broken up into </t>
//                                                               </r>
//                                                             </n>
//                                                             <n>
//                                                               <r>
//                                                                 <t>multiple segments.</t>
//                                                               </r>
//                                                             </n>
//                                                           </para>
//                                                         </root>");

//             IEnumerable<string> textSegs =
//                 from seg in root.Descendants("t")
//                 select (string)seg;

//             string str = textSegs.Aggregate(new StringBuilder(),
//                 (sb, i) => sb.Append(i),
//                 sp => sp.ToString()
//             );

//             Console.WriteLine(str);

//              // 使用 Descendants 方法查找单个后代
//             XElement root = XElement.Parse(@"<Root>
//                           <Child1>
//                             <GrandChild1>GC1 Value</GrandChild1>
//                           </Child1>
//                           <Child2>
//                             <GrandChild2>GC2 Value</GrandChild2>
//                           </Child2>
//                           <Child3>
//                             <GrandChild3>GC3 Value</GrandChild3>
//                           </Child3>
//                           <Child4>
//                             <GrandChild4>GC4 Value</GrandChild4>
//                           </Child4>
//                         </Root>");

//             string grandChild3 = (string)
//                 (from el in root.Descendants("GrandChild3")
//                  select el).First();
//             Console.WriteLine(grandChild3);


            
/**/ /// /编写使用复杂筛选的查询
             // XElement root = XElement.Load("PurchaseOrders.xml");
            
// IEnumerable<XElement> purchaseOrders =
            
//     from el in root.Elements("PurchaseOrder")
            
//     where
            
//         (from add in el.Elements("Address")
            
//          where
            
//              (string)add.Attribute("Type") == "Shipping" &&
            
//              (string)add.Element("State") == "NY"
            
//          select add)
            
//         .Any()
            
//     select el;
            
// foreach (XElement el in purchaseOrders)
            
//     Console.WriteLine((string)el.Attribute("PurchaseOrderNumber"));


//              // 筛选可选元素
//             XElement root = XElement.Parse(@"<Root>
//                           <Child1>
//                             <Text>Child One Text</Text>
//                             <Type Value=""Yes""/>
//                           </Child1>
//                           <Child2>
//                             <Text>Child Two Text</Text>
//                             <Type Value=""Yes""/>
//                           </Child2>
//                           <Child3>
//                             <Text>Child Three Text</Text>
//                             <Type Value=""No""/>
//                           </Child3>
//                           <Child4>
//                             <Text>Child Four Text</Text>
//                             <Type Value=""Yes""/>
//                           </Child4>
//                           <Child5>
//                             <Text>Child Five Text</Text>
//                           </Child5>
//                         </Root>");
//             var cList =
//                 from typeElement in root.Elements().Elements("Type")
//                 where (string)typeElement.Attribute("Value") == "Yes"
//                 select (string)typeElement.Parent.Element("Text");
//             foreach (string str in cList)
//                 Console.WriteLine(str);


            
/**/ /// /对元素进行排序
             // XElement root = XElement.Load("Data.xml");
            
// IEnumerable<decimal> prices =
            
//     from el in root.Elements("Data")
            
//     let price = (decimal)el.Element("Price")
            
//     orderby price
            
//     select price;
            
// foreach (decimal el in prices)
            
//     Console.WriteLine(el);

            
/**/ /// /对多个键上的元素进行排序
             // XElement co = XElement.Load("CustomersOrders.xml");
            
// var sortedElements =
            
//     from c in co.Element("Orders").Elements("Order")
            
//     orderby (string)c.Element("ShipInfo").Element("ShipPostalCode"),
            
//             (DateTime)c.Element("OrderDate")
            
//     select new
            
//     {
            
//         CustomerID = (string)c.Element("CustomerID"),
            
//         EmployeeID = (string)c.Element("EmployeeID"),
            
//         ShipPostalCode = (string)c.Element("ShipInfo").Element("ShipPostalCode"),
            
//         OrderDate = (DateTime)c.Element("OrderDate")
            
//     };
            
// foreach (var r in sortedElements)
            
//     Console.WriteLine("CustomerID:{0} EmployeeID:{1} ShipPostalCode:{2} OrderDate:{3:d}",
            
//         r.CustomerID, r.EmployeeID, r.ShipPostalCode, r.OrderDate);


            
// 计算中间值
            
// XElement root = XElement.Load("Data.xml");
            
// IEnumerable<decimal> extensions =
            
//     from el in root.Elements("Data")
            
//     let extension = (decimal)el.Element("Quantity") * (decimal)el.Element("Price")
            
//     where extension >= 25
            
//     orderby extension
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值