C#将xml文件拆分成多个文件并映射 [英] C# Split xml file into multiple files and map
问题描述
我需要将以下数据映射到wcf服务中的响应字段(下面是xml)。从wcf的请求字段之一我得到了一个巨大的字符串数据。该字符串是一个xml数据(转换标签后的xml以下)。我需要通过选择基于标记名的数据来映射到wcfschema中的响应字段(每个字段按
xml节点)。如何从重复记录中选择和发送单个响应。(我需要根据节点选择数据,并且必须发送到服务中的响应字段。)由于存在多个记录,我想从每个记录中选择
记录并将数据作为每个xml记录的单个响应发送。输出应包含4个单独的记录/ xml。
< AgressoQE>
&NBSP; < _recno> 0< / _ recno>
&NBSP; < _section> D< / _ section>
&NBSP; < tab> A< / tab>
&NBSP; <地址/>
&NBSP; < address_type> 1< / address_type>
&NBSP; < user_id> sss< / user_id>
&NBSP; < date_from> 2017-09-18T00:00:00 + 01:00< / date_from>
&NBSP; < resource_id> 1< / resource_id>
&NBSP; < date_to> 2099-12-31T00:00:00 + 00:00< / date_to>
&NBSP; < birth_date> 2000-01-01T00:00:00 + 00:00< / birth_date>
&NBSP; < client> w< / client>
&NBSP; < place />
&NBSP; < province />< AgressoQE />
< AgressoQE>
&NBSP; < _recno> 0< / _ recno>
&NBSP; < _section> D< / _ section>
&NBSP; < tab> A< / tab>
&NBSP; <地址/>
&NBSP; < address_type> 1< / address_type>
&NBSP; < user_id> sss< / user_id>
&NBSP; < date_from> 2017-09-18T00:00:00 + 01:00< / date_from>
&NBSP; < resource_id> 1< / resource_id>
&NBSP; < date_to> 2099-12-31T00:00:00 + 00:00< / date_to>
&NBSP; < birth_date> 2000-01-01T00:00:00 + 00:00< / birth_date>
&NBSP; < client> w< / client>
&NBSP; < place />
&NBSP; < province />< AgressoQE />
< AgressoQE>
&NBSP; < _recno> 0< / _ recno>
&NBSP; < _section> D< / _ section>
&NBSP; < tab> A< / tab>
&NBSP; <地址/>
&NBSP; < address_type> 1< / address_type>
&NBSP; < user_id> sss< / user_id>
&NBSP; < date_from> 2017-09-18T00:00:00 + 01:00< / date_from>
&NBSP; < resource_id> 1< / resource_id>
&NBSP; < date_to> 2099-12-31T00:00:00 + 00:00< / date_to>
&NBSP; < birth_date> 2000-01-01T00:00:00 + 00:00< / birth_date>
&NBSP; < client> w< / client>
&NBSP; < place />
&NBSP; < province />< AgressoQE />
< AgressoQE>
&NBSP; < _recno> 0< / _ recno>
&NBSP; < _section> D< / _ section>
&NBSP; < tab> A< / tab>
&NBSP; <地址/>
&NBSP; < address_type> 1< / address_type>
&NBSP; < user_id> sss< / user_id>
&NBSP; < date_from> 2017-09-18T00:00:00 + 01:00< / date_from>
&NBSP; < resource_id> 1< / resource_id>
&NBSP; < date_to> 2099-12-31T00:00:00 + 00:00< / date_to>
&NBSP; < birth_date> 2000-01-01T00:00:00 + 00:00< / birth_date>
&NBSP; < client> w< / client>
&NBSP; < place />
&NBSP; < province />< AgressoQE />
问候,vishal
Hi b vishal,
感谢您发布此处。
您的xml文件有问题。我做了一些改变。请尝试下面的xml代码。
< Root>
< AgressoQE>
< _recno> 0< / _ recno>
< _section> D< / _ section>
< tab> A< / tab>
< address_type> 1< / address_type>
< user_id> sss< / user_id>
< date_from> 2017-09-18T00:00:00 + 01:00< / date_from>
< resource_id> 1< / resource_id>
< date_to> 2099-12-31T00:00:00 + 00:00< / date_to>
< birth_date> 2000-01-01T00:00:00 + 00:00< / birth_date>
< client> w< / client>
< / AgressoQE>
< AgressoQE>
< _recno> 0< / _ recno>
< _section> D< / _ section>
< tab> A< / tab>
< address_type> 1< / address_type>
< user_id> sss< / user_id>
< date_from> 2017-09-18T00:00:00 + 01:00< / date_from>
< resource_id> 1< / resource_id>
< date_to> 2099-12-31T00:00:00 + 00:00< / date_to>
< birth_date> 2000-01-01T00:00:00 + 00:00< / birth_date>
< client> w< / client>
< / AgressoQE>
< AgressoQE>
< _recno> 0< / _ recno>
< _section> D< / _ section>
< tab> A< / tab>
< address_type> 1< / address_type>
< user_id> sss< / user_id>
< date_from> 2017-09-18T00:00:00 + 01:00< / date_from>
< resource_id> 1< / resource_id>
< date_to> 2099-12-31T00:00:00 + 00:00< / date_to>
< birth_date> 2000-01-01T00:00:00 + 00:00< / birth_date>
< client> w< / client>
< / AgressoQE>
< AgressoQE>
< _recno> 0< / _ recno>
< _section> D< / _ section>
< tab> A< / tab>
< address_type> 1< / address_type>
< user_id> sss< / user_id>
< date_from> 2017-09-18T00:00:00 + 01:00< / date_from>
< resource_id> 1< / resource_id>
< date_to> 2099-12-31T00:00:00 + 00:00< / date_to>
< birth_date> 2000-01-01T00:00:00 + 00:00< / birth_date>
< client> w< / client>
< / AgressoQE>
< / root>
static void Main(string [] args)
{
XDocument xml = XDocument .Load(@" New.xml"); //加载源xml
var xmls = xml.Root.Elements()。ToArray(); //拆分成元素
for(int i = 0; i< xmls.Length; i ++)
{
//将每个元素写入不同的文件
using(var file = File.CreateText(string.Format(" xml {0} .xml",i + 1)))
{
file.Write(xmls [i] .ToString() );
}
}
}
下面的图片是xml文件的内容。
xml1.xml
xml2.xml
xml3.xml
xml4.xml
最好的问候,
温迪跨度>
Hi,
I need to map following data to response fields in wcf service(below is xml).From one of the request field of wcf I am getting a huge string data.That string is a xml data(below xml after converting tags). I need to map to response field(each field as per xml node) in wcfschema by picking data based on tagname. How to pick and send as a single response from repeating record.(I need to pick the data based on node and has to be send to response field in service.) As multiple records are present i want to pick from each record and send the data as a single response from each xml record.Output should contain 4 seperate records/xml.
<AgressoQE>
<_recno>0</_recno>
<_section>D</_section>
<tab>A</tab>
<address />
<address_type>1</address_type>
<user_id>sss</user_id>
<date_from>2017-09-18T00:00:00+01:00</date_from>
<resource_id>1</resource_id>
<date_to>2099-12-31T00:00:00+00:00</date_to>
<birth_date>2000-01-01T00:00:00+00:00</birth_date>
<client>w</client>
<place />
<province /><AgressoQE/>
<AgressoQE>
<_recno>0</_recno>
<_section>D</_section>
<tab>A</tab>
<address />
<address_type>1</address_type>
<user_id>sss</user_id>
<date_from>2017-09-18T00:00:00+01:00</date_from>
<resource_id>1</resource_id>
<date_to>2099-12-31T00:00:00+00:00</date_to>
<birth_date>2000-01-01T00:00:00+00:00</birth_date>
<client>w</client>
<place />
<province /><AgressoQE/>
<AgressoQE>
<_recno>0</_recno>
<_section>D</_section>
<tab>A</tab>
<address />
<address_type>1</address_type>
<user_id>sss</user_id>
<date_from>2017-09-18T00:00:00+01:00</date_from>
<resource_id>1</resource_id>
<date_to>2099-12-31T00:00:00+00:00</date_to>
<birth_date>2000-01-01T00:00:00+00:00</birth_date>
<client>w</client>
<place />
<province /><AgressoQE/>
<AgressoQE>
<_recno>0</_recno>
<_section>D</_section>
<tab>A</tab>
<address />
<address_type>1</address_type>
<user_id>sss</user_id>
<date_from>2017-09-18T00:00:00+01:00</date_from>
<resource_id>1</resource_id>
<date_to>2099-12-31T00:00:00+00:00</date_to>
<birth_date>2000-01-01T00:00:00+00:00</birth_date>
<client>w</client>
<place />
<province /><AgressoQE/>
Regards, vishal
Hi b vishal,
Thank you for posting here.
There is something wrong with your xml file. I do some change. Please try the code with xml below.
<Root> <AgressoQE> <_recno>0</_recno> <_section>D</_section> <tab>A</tab> <address_type>1</address_type> <user_id>sss</user_id> <date_from>2017-09-18T00:00:00+01:00</date_from> <resource_id>1</resource_id> <date_to>2099-12-31T00:00:00+00:00</date_to> <birth_date>2000-01-01T00:00:00+00:00</birth_date> <client>w</client> </AgressoQE> <AgressoQE> <_recno>0</_recno> <_section>D</_section> <tab>A</tab> <address_type>1</address_type> <user_id>sss</user_id> <date_from>2017-09-18T00:00:00+01:00</date_from> <resource_id>1</resource_id> <date_to>2099-12-31T00:00:00+00:00</date_to> <birth_date>2000-01-01T00:00:00+00:00</birth_date> <client>w</client> </AgressoQE> <AgressoQE> <_recno>0</_recno> <_section>D</_section> <tab>A</tab> <address_type>1</address_type> <user_id>sss</user_id> <date_from>2017-09-18T00:00:00+01:00</date_from> <resource_id>1</resource_id> <date_to>2099-12-31T00:00:00+00:00</date_to> <birth_date>2000-01-01T00:00:00+00:00</birth_date> <client>w</client> </AgressoQE> <AgressoQE> <_recno>0</_recno> <_section>D</_section> <tab>A</tab> <address_type>1</address_type> <user_id>sss</user_id> <date_from>2017-09-18T00:00:00+01:00</date_from> <resource_id>1</resource_id> <date_to>2099-12-31T00:00:00+00:00</date_to> <birth_date>2000-01-01T00:00:00+00:00</birth_date> <client>w</client> </AgressoQE> </Root>
static void Main(string[] args) { XDocument xml = XDocument.Load(@"New.xml"); // loading source xml var xmls = xml.Root.Elements().ToArray(); // split into elements for (int i = 0; i < xmls.Length; i++) { // write each element into different file using (var file = File.CreateText(string.Format("xml{0}.xml", i + 1))) { file.Write(xmls[i].ToString()); } } }The pictures below are content of xml file.
xml1.xml
xml2.xml
xml3.xml
xml4.xml
Best Regards,
Wendy
这篇关于C#将xml文件拆分成多个文件并映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!