Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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# 在XML中为每个员工Individid连接来自相同节点的值_C#_Xml - Fatal编程技术网

C# 在XML中为每个员工Individid连接来自相同节点的值

C# 在XML中为每个员工Individid连接来自相同节点的值,c#,xml,C#,Xml,我是编程初学者。我有这样一个场景: 对于每个唯一的应用程序成员,我想返回一个新的XML,该XML包含每个EMPLOYEE_member_Individual应用程序字段上EMPLOYEE_member_Individual_ROLE_的所有串联值。 应从应用程序成员节点连接每个成员的角色 <EMPLOYEE_MEMBER_INDIVID> <EMPLOYEE_MEMBER_INDIVID_MAIN_DATA ENTITY=""> <EMPLOYE

我是编程初学者。我有这样一个场景: 对于每个唯一的应用程序成员,我想返回一个新的XML,该XML包含每个EMPLOYEE_member_Individual应用程序字段上EMPLOYEE_member_Individual_ROLE_的所有串联值。 应从应用程序成员节点连接每个成员的角色

<EMPLOYEE_MEMBER_INDIVID>
    <EMPLOYEE_MEMBER_INDIVID_MAIN_DATA ENTITY="">
      <EMPLOYEE_MEMBER_INDIVID_UNIQ_ID>096788</EMPLOYEE_MEMBER_INDIVID_UNIQ_ID>
      <EMPLOYEE_MEMBER_INDIVID_NAME>Dina</EMPLOYEE_MEMBER_INDIVID_NAME>
      <EMPLOYEE_MEMBER_INDIVID_SURNAME>Gomez</EMPLOYEE_MEMBER_INDIVID_SURNAME>
    </EMPLOYEE_MEMBER_INDIVID_MAIN_DATA>
    <EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S>

      <EMPLOYEE_MEMBER_INDIVID_ROLE_DATA ENTITY="">
        <EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION>Co-borrower</EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION>
      </EMPLOYEE_MEMBER_INDIVID_ROLE_DATA>

      <EMPLOYEE_MEMBER_INDIVID_ROLE_DATA ENTITY="">          <EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION>Guarantor</EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION>
      </EMPLOYEE_MEMBER_INDIVID_ROLE_DATA>


      <EMPLOYEE_MEMBER_INDIVID_ROLE_DATA ENTITY="">
        <EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION>Mortgager individual</EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION>
      </EMPLOYEE_MEMBER_INDIVID_ROLE_DATA>
    </EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S>
  </EMPLOYEE_MEMBER_INDIVID>

096788
迪娜
戈麦斯
共同借款人
担保人
抵押人个人
输出节点应为:

<EMPLOYEE_MEMBER_INDIVID>
    <EMPLOYEE_MEMBER_INDIVID_MAIN_DATA ENTITY="">
      <EMPLOYEE_MEMBER_INDIVID_UNIQ_ID>096788</EMPLOYEE_MEMBER_INDIVID_UNIQ_ID>
      <EMPLOYEE_MEMBER_INDIVID_NAME>Dina</EMPLOYEE_MEMBER_INDIVID_NAME>
      <EMPLOYEE_MEMBER_INDIVID_SURNAME>Gomez</EMPLOYEE_MEMBER_INDIVID_SURNAME>
    </EMPLOYEE_MEMBER_INDIVID_MAIN_DATA>
    <EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S>
      <EMPLOYEE_MEMBER_INDIVID_ROLE_DATA ENTITY="">
        <EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION>Co-borrower / Guarantor / Mortgager individual</EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION>
      </EMPLOYEE_MEMBER_INDIVID_ROLE_DATA>
    </EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S>
  </EMPLOYEE_MEMBER_INDIVID>

096788
迪娜
戈麦斯
共同借款人/担保人/抵押人个人
我的代码是:

 static void Main(string[] args)
    {
        try
        {
            //Create A XML Document Of Response String 
            XmlDocument xmlDoc = new XmlDocument();


            //Read the XML File 

            XmlNodeList nodeList2 = xmlDoc.SelectNodes("//EMPLOYEE_MEMBER_S/EMPLOYEE_MEMBER" +
            "[(EMPLOYEE_MEMBER_INDIVID/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA/EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION ='Borrower' " +
            "or EMPLOYEE_MEMBER_INDIVID/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA/EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION='Mortgager' " +
            "or EMPLOYEE_MEMBER_INDIVID/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA/EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION='Co-borrower')]");
            List<string> baseMemberUNIQ_IDs = new List<string>();
            List<LoanMember> infos = new List<LoanMember>();



            XmlNodeList baseMembersList = xmlDoc.SelectNodes("//APPLICATION_MEMBERS/APPLICATION_MEMBER[ROLE='Borrower' or ROLE='Mortgager individual' or ROLE='Co-borrower']");

            foreach (XmlNode xmlNode in baseMembersList)
            {
                baseMemberUNIQ_IDs.Add(xmlNode["MEMBER_UNIQ_ID"].InnerText);
            }

            var distinctBaseMembersUNIQ_ID = baseMemberUNIQ_IDs.Distinct();


            foreach (var UNIQ_ID in distinctBaseMembersUNIQ_ID)
            {
                XmlNodeList nodeList = xmlDoc.SelectNodes("//EMPLOYEE_MEMBER_S/EMPLOYEE_MEMBER" +
                "[(EMPLOYEE_MEMBER_INDIVID/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA/EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION ='Borrower' " +
                "or EMPLOYEE_MEMBER_INDIVID/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA/EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION='Mortgager individual' " +
                "or EMPLOYEE_MEMBER_INDIVID/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S/EMPLOYEE_MEMBER_INDIVID_ROLE_DATA/EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION='Co-borrower') " +
                "and EMPLOYEE_MEMBER_INDIVID/EMPLOYEE_MEMBER_INDIVID_MAIN_DATA/EMPLOYEE_MEMBER_INDIVID_UNIQ_ID=" + UNIQ_ID.ToString() + "]");

                foreach (XmlNode xmlNode2 in nodeList)
                {
                    String ROLE = "";
                    foreach (XmlNode childNode in xmlNode2)
                    {
                        ROLE = childNode.ChildNodes[0].InnerXml;
                        Console.WriteLine("CONCATED ROLES ARE " + ROLE);
                        // All roles of each employee individ should be concatenated inside the first node EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION node, Other nodes shoud be removed/
                    }

                }
            }
        }
        catch
        {
            throw;
        }
        Console.ReadKey();


    }
}
static void Main(字符串[]args)
{
尝试
{
//创建响应字符串的XML文档
XmlDocument xmlDoc=新的XmlDocument();
//读取XML文件
XmlNodeList nodeList2=xmlDoc.SelectNodes(//EMPLOYEE\u MEMBER\S/EMPLOYEE\u MEMBER)+
“[(员工\成员\个人/员工\成员\个人角色\数据\员工\成员\个人角色\数据/员工\成员\个人成员\个人角色\数据/员工\成员\个人角色\在申请中=”借款人“+
“或申请中的员工\成员\个人/员工\成员\个人角色\数据\员工\成员\个人角色\数据\员工\成员\个人角色\个人角色\数据\员工\成员\个人角色=”抵押人“+
“或员工\成员\个人/员工\成员\个人角色\数据\员工\成员\个人角色\数据\员工\成员\员工\成员\个人角色\数据\员工\成员\个人角色\申请书上的\共同借款人'”;
List baseMemberUNIQ_id=new List();
列表信息=新列表();
XmlNodeList baseMembersList=xmlDoc.SelectNodes(//APPLICATION\u MEMBERS/APPLICATION\u MEMBERS[ROLE='booker'或ROLE='Mortgager individual'或ROLE='Co-booker']);
foreach(baseMembersList中的XmlNode XmlNode)
{
baseMemberUNIQ_ID.Add(xmlNode[“MEMBER_UNIQ_ID”].InnerText);
}
var distinctbasembersuniq_ID=baseMemberUNIQ_ID.Distinct();
foreach(distinctbasembersuniq\u ID中的变量UNIQ\u ID)
{
XmlNodeList nodeList=xmlDoc.SelectNodes(//EMPLOYEE\u MEMBER\u S/EMPLOYEE\u MEMBER)+
“[(员工\成员\个人/员工\成员\个人角色\数据\员工\成员\个人角色\数据/员工\成员\个人成员\个人角色\数据/员工\成员\个人角色\在申请中=”借款人“+
“或员工\成员\个人/员工\成员\个人角色\数据\员工\成员\个人角色\数据\员工\成员\个人成员\个人角色\数据\员工\成员\个人角色\在申请中=”抵押人个人“+
“或员工\成员\个人/员工\成员\个人角色\数据\员工\成员\个人角色\数据\员工\成员\个人成员\个人角色\数据\员工\成员\个人角色\申请书上的\共同借款人'”+
“和EMPLOYEE_MEMBER_individual/EMPLOYEE_MEMBER_individual_MAIN_DATA/EMPLOYEE_MEMBER_individual_UNIQ_ID=“+UNIQ_ID.ToString()+”);
foreach(节点列表中的xmlNode2)
{
字符串角色=”;
foreach(xmlNode2中的XmlNode-childNode)
{
ROLE=childNode.ChildNodes[0]。InnerXml;
Console.WriteLine(“具体角色是”+角色);
//每个employee Individd的所有角色都应该在应用程序节点上的第一个节点employee_MEMBER_Individid_ROLE_内串联,其他节点应该被删除/
}
}
}
}
抓住
{
投掷;
}
Console.ReadKey();
}
}
以下url中为输入文档XML:


谢谢你的帮助

尝试以下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
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            List<XElement> EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S = doc.Descendants("EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S").ToList();

            foreach (XElement EMPLOYEE_MEMBER_INDIVID_ROLE_DATA in EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S)
            {
                string[] roles = EMPLOYEE_MEMBER_INDIVID_ROLE_DATA.Descendants("EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION").Select(x => (string)x).ToArray();

                XElement newEMPLOYEE_MEMBER_INDIVID_ROLE_DATA = new XElement("EMPLOYEE_MEMBER_INDIVID_ROLE_DATA", new object[] {
                    new XAttribute("ENTITY", ""),
                    new XElement("EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION", string.Join(" / ", roles))
                });

                EMPLOYEE_MEMBER_INDIVID_ROLE_DATA.ReplaceWith(newEMPLOYEE_MEMBER_INDIVID_ROLE_DATA);
            }

        }
    }


}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Linq;
命名空间控制台应用程序1
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
XDocument doc=XDocument.Load(文件名);
列出EMPLOYEE_MEMBER_individual_ROLE_DATA_S=doc.substands(“EMPLOYEE_MEMBER_individual_ROLE_DATA_S”).ToList();
foreach(员工\成员\个人\角色\数据中的员工\成员\个人\角色\数据)
{
string[]roles=EMPLOYEE\u MEMBER\u individual\u ROLE\u DATA.substands(“EMPLOYEE\u MEMBER\u individual\u ROLE\u ON_APPLICATION”)。选择(x=>(string)x.ToArray();
XElement新员工\成员\个人\角色\数据=新XElement(“员工\成员\个人\角色\数据”,新对象[]{
新的XAttribute(“实体”、“实体”),
新的XElement(“员工\成员\个人\应用程序上的角色”,string.Join(“/”,角色))
});
员工\成员\个人\角色\数据。替换为(新员工\成员\个人\角色\数据);
}
}
}
}

尝试以下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
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            List<XElement> EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S = doc.Descendants("EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S").ToList();

            foreach (XElement EMPLOYEE_MEMBER_INDIVID_ROLE_DATA in EMPLOYEE_MEMBER_INDIVID_ROLE_DATA_S)
            {
                string[] roles = EMPLOYEE_MEMBER_INDIVID_ROLE_DATA.Descendants("EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION").Select(x => (string)x).ToArray();

                XElement newEMPLOYEE_MEMBER_INDIVID_ROLE_DATA = new XElement("EMPLOYEE_MEMBER_INDIVID_ROLE_DATA", new object[] {
                    new XAttribute("ENTITY", ""),
                    new XElement("EMPLOYEE_MEMBER_INDIVID_ROLE_ON_APPLICATION", string.Join(" / ", roles))
                });

                EMPLOYEE_MEMBER_INDIVID_ROLE_DATA.ReplaceWith(newEMPLOYEE_MEMBER_INDIVID_ROLE_DATA);
            }

        }
    }


}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Linq;
命名空间控制台应用程序1
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
XDocument doc=XDocument.Load(文件名);
列出EMPLOYEE_MEMBER_individual_ROLE_DATA_S=doc.substands(“EMPLOYEE_MEMBER_individual_ROLE_DATA_S”).ToList();
foreach(员工\成员\个人\角色\数据中的员工\成员\个人\角色\数据)
{
string[]roles=EMPLOYEE\u MEMBER\u individual\u ROLE\u DATA.substands(“EMPLOYEE\u MEMBER\u individual\u ROLE\u ON_APPLICATION”)。选择(x=>(string)x.ToArray();
XElement新员工\成员\个人\角色\数据=新XElement(“员工\成员\个人\角色\数据”,新对象[]{
新的XAttribute(“实体”、“实体”),
新XElement(“员工\成员\个人\应用程序上的角色”),string.Join(“/”,角色