Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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# 在特定属性处连接3个XML文档,并使用C中的LINQ获取单个XML文档 我有3个xml文档数据。 每个都有相似的属性ID 我试图加入2个XML,但没有得到任何乐趣,因为它导致错误地说objectnull blaa..blaa。 是否有人可以帮助我创建如下第四个XML输出_C#_Xml_Linq - Fatal编程技术网

C# 在特定属性处连接3个XML文档,并使用C中的LINQ获取单个XML文档 我有3个xml文档数据。 每个都有相似的属性ID 我试图加入2个XML,但没有得到任何乐趣,因为它导致错误地说objectnull blaa..blaa。 是否有人可以帮助我创建如下第四个XML输出

C# 在特定属性处连接3个XML文档,并使用C中的LINQ获取单个XML文档 我有3个xml文档数据。 每个都有相似的属性ID 我试图加入2个XML,但没有得到任何乐趣,因为它导致错误地说objectnull blaa..blaa。 是否有人可以帮助我创建如下第四个XML输出,c#,xml,linq,C#,Xml,Linq,Xml属性值需要在值周围加上双引号,如 请参见下面的xml linq解决方案: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.Linq; namespace ConsoleApplication4 { class Program { const string FILE

Xml属性值需要在值周围加上双引号,如

请参见下面的xml linq解决方案:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;


namespace ConsoleApplication4
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        const string FILENAME1 = @"c:\temp\test1.xml";
        const string FILENAME2 = @"c:\temp\test2.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            XDocument doc1 = XDocument.Load(FILENAME1);
            XDocument doc2 = XDocument.Load(FILENAME2);


            var joins = (from d in doc.Descendants("person")
                         join d1 in doc1.Descendants("person") on (int)d.Attribute("id") equals (int)d1.Attribute("id")
                         join d2 in doc2.Descendants("person") on (int)d.Attribute("id") equals (int)d2.Attribute("id")
                         select new { d = d, d1 = d1, d2 = d2 }
                         ).ToList();

            string ident = "<?xml version=\"1.0\" encoding=\"utf-8\" ?> <person></person>";

            XDocument outputXml = XDocument.Parse(ident);
            XElement persons = outputXml.Root;

            foreach (var join in joins)
            {
                XElement person = XElement.Parse(join.d.ToString());
                person.Add(XElement.Parse(join.d1.Element("phone").ToString()));
                person.Add(XElement.Parse(join.d2.Element("country").ToString()));
                persons.Add(person);


            }

        }
    }


}

嗨@jdweng。非常感谢您对此进行调查。我能够毫无差错地通过此测试。但仍然无法创建所需的输出。我的意思是,如何将var连接转换为新的xml输出,如上所述。对不起,你是天才。10******. 从昨晚开始我就在挣扎。你现在对我来说就像上帝一样。万分感谢:将您的解决方案标记为答案
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;


namespace ConsoleApplication4
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        const string FILENAME1 = @"c:\temp\test1.xml";
        const string FILENAME2 = @"c:\temp\test2.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            XDocument doc1 = XDocument.Load(FILENAME1);
            XDocument doc2 = XDocument.Load(FILENAME2);


            var joins = (from d in doc.Descendants("person")
                         join d1 in doc1.Descendants("person") on (int)d.Attribute("id") equals (int)d1.Attribute("id")
                         join d2 in doc2.Descendants("person") on (int)d.Attribute("id") equals (int)d2.Attribute("id")
                         select new { d = d, d1 = d1, d2 = d2 }
                         ).ToList();

            string ident = "<?xml version=\"1.0\" encoding=\"utf-8\" ?> <person></person>";

            XDocument outputXml = XDocument.Parse(ident);
            XElement persons = outputXml.Root;

            foreach (var join in joins)
            {
                XElement person = XElement.Parse(join.d.ToString());
                person.Add(XElement.Parse(join.d1.Element("phone").ToString()));
                person.Add(XElement.Parse(join.d2.Element("country").ToString()));
                persons.Add(person);


            }

        }
    }


}