C# 在XML中为每个员工Individid连接来自相同节点的值
我是编程初学者。我有这样一个场景: 对于每个唯一的应用程序成员,我想返回一个新的XML,该XML包含每个EMPLOYEE_member_Individual应用程序字段上EMPLOYEE_member_Individual_ROLE_的所有串联值。 应从应用程序成员节点连接每个成员的角色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
<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(“/”,角色