如何动态获取具有相同名称id的xml文件的最后一个元素
包含族列表的Xml文件。可以随时将族添加到列表中,也可以添加新的子项如何动态获取具有相同名称id的xml文件的最后一个元素,xml,elements,Xml,Elements,包含族列表的Xml文件。可以随时将族添加到列表中,也可以添加新的子项 <family> <Mother> <child age="1"> <dog-name>dog1</dog-name> </child> <child age="2"> <dog-name>dog1</dog-name> </child&
<family>
<Mother>
<child age="1">
<dog-name>dog1</dog-name>
</child>
<child age="2">
<dog-name>dog1</dog-name>
</child>
<child age="3">
<dog-name>dog1</dog-name>
</child>
<child age="4">
<dog-name>dog1</dog-name>
</child>
</Mother>
</family>
<family2>
<Mother>
<child age="1">
<dog-name>dog1</dog-name>
</child>
<child age="2">
<dog-name>dog1</dog-name>
</child>
<child age="3">
<dog-name>dog1</dog-name>
</child>
<child age="4">
<dog-name>dog1</dog-name>
</child>
</Mother>
</family2>
<family3>
<Mother>
<child age="1">
<dog-name>dog1</dog-name>
</child>
<child age="2">
<dog-name>dog1</dog-name>
</child>
<child age="3">
<dog-name>dog1</dog-name>
</child>
<child age="4">
<dog-name>dog1</dog-name>
</child>
</Mother>
</family3>
我还想得到最大孩子的狗名,并输出值。使用XML Linq
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string xml =
"<Root>" +
"<family>" +
"<Mother>" +
"<child age=\"1\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"2\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"3\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"4\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"</Mother>" +
"</family>" +
"<family2>" +
"<Mother>" +
"<child age=\"1\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"2\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"3\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"4\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"</Mother>" +
"</family2>" +
"<family3>" +
"<Mother>" +
"<child age=\"1\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"2\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"3\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"4\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"</Mother>" +
"</family3>" +
"</Root>"; ;
XElement family = XElement.Parse(xml);
var results = family.Elements().Select(x => new
{
name = x.Name,
children = x.Descendants("child").Select(y => new
{
age = (int)y.Attribute("age"),
dog_name = y.Element("dog-name").Value
}).OrderByDescending(z => z.age).ToList()
}).ToList();
foreach (var family_properties in results)
{
Console.WriteLine("Family Name : {0}, Age = {1}, Dog Name = {2}",
family_properties.name, family_properties.children.FirstOrDefault().age, family_properties.children.FirstOrDefault().dog_name);
}
Console.ReadLine();
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Linq;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串xml=
"" +
"" +
"" +
"" +
“狗1”+
"" +
"" +
“狗1”+
"" +
"" +
“狗1”+
"" +
"" +
“狗1”+
"" +
"" +
"" +
"" +
"" +
"" +
“狗1”+
"" +
"" +
“狗1”+
"" +
"" +
“狗1”+
"" +
"" +
“狗1”+
"" +
"" +
"" +
"" +
"" +
"" +
“狗1”+
"" +
"" +
“狗1”+
"" +
"" +
“狗1”+
"" +
"" +
“狗1”+
"" +
"" +
"" +
""; ;
XElement family=XElement.Parse(xml);
var results=family.Elements()。选择(x=>new
{
name=x.name,
children=x.children(“child”)。选择(y=>new
{
年龄=(int)y.属性(“年龄”),
dog_name=y.Element(“dog name”).Value
}).OrderByDescending(z=>z.age).ToList()
}).ToList();
foreach(结果中的var系列属性)
{
WriteLine(“姓氏:{0},年龄={1},狗名={2}”,
family_properties.name,family_properties.children.FirstOrDefault().age,family_properties.children.FirstOrDefault().dog_name);
}
Console.ReadLine();
}
}
}
yes运行良好@jdweng我应该在一开始就指定xml来自链接/url它也适用于在线url吗?我应该使用XElement family=XElement.Load(url);url为字符串(文件或url)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string xml =
"<Root>" +
"<family>" +
"<Mother>" +
"<child age=\"1\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"2\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"3\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"4\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"</Mother>" +
"</family>" +
"<family2>" +
"<Mother>" +
"<child age=\"1\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"2\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"3\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"4\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"</Mother>" +
"</family2>" +
"<family3>" +
"<Mother>" +
"<child age=\"1\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"2\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"3\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"<child age=\"4\">" +
"<dog-name>dog1</dog-name>" +
"</child>" +
"</Mother>" +
"</family3>" +
"</Root>"; ;
XElement family = XElement.Parse(xml);
var results = family.Elements().Select(x => new
{
name = x.Name,
children = x.Descendants("child").Select(y => new
{
age = (int)y.Attribute("age"),
dog_name = y.Element("dog-name").Value
}).OrderByDescending(z => z.age).ToList()
}).ToList();
foreach (var family_properties in results)
{
Console.WriteLine("Family Name : {0}, Age = {1}, Dog Name = {2}",
family_properties.name, family_properties.children.FirstOrDefault().age, family_properties.children.FirstOrDefault().dog_name);
}
Console.ReadLine();
}
}
}