Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ-在元素中获取元素_C#_Xml_Vb.net_Linq - Fatal编程技术网

C# LINQ-在元素中获取元素

C# LINQ-在元素中获取元素,c#,xml,vb.net,linq,C#,Xml,Vb.net,Linq,我想从XML文件中提取信息,请参见下面代码的特定部分: 2014-07-02 30692 阿塞特过滤器 0 雷维西翁30000 0 2015-03-27 63984 阿塞特过滤器 0 雷维西翁60000 0 埃斯科比拉斯 0 特殊过滤器 0 如您所见,它有多个,其中有多个。我想要的输出是这样的: 2014-07-02 30692 Filtro de aceite 2014-07-02 30692 Revisión 30000 2015-03-27 63984 Filtro de aceite 2

我想从XML文件中提取信息,请参见下面代码的特定部分:

2014-07-02 30692 阿塞特过滤器 0 雷维西翁30000 0 2015-03-27 63984 阿塞特过滤器 0 雷维西翁60000 0 埃斯科比拉斯 0 特殊过滤器 0 如您所见,它有多个,其中有多个。我想要的输出是这样的:

2014-07-02 30692 Filtro de aceite
2014-07-02 30692 Revisión 30000
2015-03-27 63984 Filtro de aceite
2015-03-27 63984 Revisión 60000
2015-03-27 63984 Escobillas
2015-03-27 63984 Filtro de partículas
我没有问题去提取,甚至我提取了,但是我不能马上做。这是我当前在x1000次不同尝试后的糟糕代码…:

对于document.DegenantsActivity中的每个描述作为元素 carRepairDesc=desc.element说明 对于document.degenantsMaintenanceHistory中作为元素的每个选项 carredPairDate=options.element维修日期.Value carRepairKMs=options.element里程数.Value 下一个 Console.WriteLineCorrepairDate&carRepairKMs&km&carRepairDesc 下一个 此代码的输出略有不同:

2015-12-28 96833km Filtro de aceite
2015-12-28 96833km Revisión 30000
2015-12-28 96833km Filtro de aceite
2015-12-28 96833km Revisión 60000
2015-12-28 96833km Escobillas
2015-12-28 96833km Filtro de particulas
我希望你有任何建议

编辑:

感谢@Hybridzz,以下是VB.Net中的解决方案:

将文档作为XDocument=XDocument.LoadPATH调整为XML Dim MHHISTORY=来自文档中的r。子代维护历史选择新建{ Key.RepairDate=r.element RepairDate.Value, Key.miliness=r.element miliness.Value, Key.ActivityDescs=r.genderantsactivity。[选择]Functionx x.ElementDescription.Value } 对于历史上的每个r 对于r.ActivityDecs中的每个activityDesc Console.WriteLineString.Format{0}{1}{2}{3},r.RepairDate,r.miliety,activityDesc,Environment.NewLine 下一个 下一个
这是一个c版本,但您可以更改为VB.net

  XDocument document = XDocument.Load(@"PATH TO XML");

        var mHistory = from r in document.Descendants("MaintenanceHistory")
                    select new
                    {
                        RepairDate = r.Element("RepairDate").Value,
                        Mileage = r.Element("Mileage").Value,
                        ActivityDescs = r.Descendants("Activity").Select(x => x.Element("Description").Value)
                    };

        foreach (var r in mHistory)
        {
            foreach (var activityDesc in r.ActivityDescs)
            {
                Console.WriteLine(string.Format("{0} {1} {2} {3}", r.RepairDate, r.Mileage, activity,  Environment.NewLine));
            }

        }  
输出是

2014-07-02 30692 Filtro de aceite 
2014-07-02 30692 Revisión 30000 
2015-03-27 63984 Filtro de aceite 
2015-03-27 63984 Revisión 60000 
2015-03-27 63984 Escobillas 
2015-03-27 63984 Filtro de particulas 

它就像一个符咒。你救了我一天!你能解释一下密码吗?我不明白mHistory var部分到底是如何工作的。谢谢!这就是linq的美妙之处,我们正在从xml数据动态创建新对象选择“新建”将创建具有定义属性的新对象。我将在将来使用它,当然。再次感谢你。