<?xml version="1.0" ?> <Order>//因为只能有一个根节点所以临时加了一个order节点 <OrderInfo>//第一条 <OrderNum>1</OrderNum> <OrderDt></OrderDt> <OrderDtm></OrderDtm> <MdctNum></MdctNum> <MdctDt></MdctDt> <PtntNum></PtntNum> <PtntNm></PtntNm> <Sex></Sex> <Birthday></Birthday> <InOutClsf>I</InOutClsf> <HsptCd></HsptCd> <DptmtCd></DptmtCd> <DoctorNm></DoctorNm> <WardCd></WardCd> <RoomNum></RoomNum> <BedNum></BedNum> <EmgClsf></EmgClsf> <DschClsf></DschClsf> <OrderClsf> </OrderClsf> <Note></Note> <DataClsf></DataClsf> <DspsOpt></DspsOpt> <SickCd></SickCd> <SickNm></SickNm> <AllergyNm></AllergyNm> <ReqSiteCd></ReqSiteCd> <ReqSiteNm></ReqSiteNm>
<MedItem> <MedCd></MedCd> <MedNm>1</MedNm> <MedType></MedType> <MedUnit></MedUnit> <PowderYn></PowderYn> <UseAtcYn>Y</UseAtcYn> <GroupNum></GroupNum> <MedNote></MedNote> <DschYn></DschYn> <OrderMedKey></OrderMedKey> <MedItemDose> <TakeDt></TakeDt> <TakeDays></TakeDays> <DrtsCd></DrtsCd> <DrtsNm></DrtsNm> <DoseList></DoseList> </MedItemDose> </MedItem>
</OrderInfo> <OrderInfo>//第二条 <OrderNum>1</OrderNum> <OrderDt></OrderDt> <OrderDtm></OrderDtm> <MdctNum></MdctNum> <MdctDt></MdctDt> <PtntNum></PtntNum> <PtntNm></PtntNm> <Sex></Sex> <Birthday></Birthday> <InOutClsf>I</InOutClsf> <HsptCd></HsptCd> <DptmtCd></DptmtCd> <DoctorNm></DoctorNm> <WardCd></WardCd> <RoomNum></RoomNum> <BedNum></BedNum> <EmgClsf></EmgClsf> <DschClsf></DschClsf> <OrderClsf> </OrderClsf> <Note></Note> <DataClsf></DataClsf> <DspsOpt></DspsOpt> <SickCd></SickCd> <SickNm></SickNm> <AllergyNm></AllergyNm> <ReqSiteCd></ReqSiteCd> <ReqSiteNm></ReqSiteNm>
<MedItem> <MedCd></MedCd> <MedNm>2</MedNm> <MedType></MedType> <MedUnit></MedUnit> <PowderYn></PowderYn> <UseAtcYn>Y</UseAtcYn> <GroupNum></GroupNum> <MedNote></MedNote> <DschYn></DschYn> <OrderMedKey></OrderMedKey> <MedItemDose> <TakeDt></TakeDt> <TakeDays></TakeDays> <DrtsCd></DrtsCd> <DrtsNm></DrtsNm> <DoseList></DoseList> </MedItemDose> </MedItem>
</OrderInfo> </Order> ......可能有多条OrderInfo
理想拼成這样:
<?xml version="1.0" ?> <OrderInfo> <OrderNum>1</OrderNum> <OrderDt></OrderDt> <OrderDtm></OrderDtm> <MdctNum></MdctNum> <MdctDt></MdctDt> <PtntNum></PtntNum> <PtntNm></PtntNm> <Sex></Sex> <Birthday></Birthday> <InOutClsf>I</InOutClsf> <HsptCd></HsptCd> <DptmtCd></DptmtCd> <DoctorNm></DoctorNm> <WardCd></WardCd> <RoomNum></RoomNum> <BedNum></BedNum> <EmgClsf></EmgClsf> <DschClsf></DschClsf> <OrderClsf> </OrderClsf> <Note></Note> <DataClsf></DataClsf> <DspsOpt></DspsOpt> <SickCd></SickCd> <SickNm></SickNm> <AllergyNm></AllergyNm> <ReqSiteCd></ReqSiteCd> <ReqSiteNm></ReqSiteNm> <MedItem> <MedCd></MedCd> <MedNm>1</MedNm> <MedType></MedType> <MedUnit></MedUnit> <PowderYn></PowderYn> <UseAtcYn>Y</UseAtcYn> <GroupNum></GroupNum> <MedNote></MedNote> <DschYn></DschYn> <OrderMedKey></OrderMedKey> <MedItemDose> <TakeDt></TakeDt> <TakeDays></TakeDays> <DrtsCd></DrtsCd> <DrtsNm></DrtsNm> <DoseList></DoseList> </MedItemDose> </MedItem>//上面基本都不变 只是把相同OrderInfo节点下的OrderNum相同值的MedItem拼接在后面,和成一个OrderInfo,并去掉之前的Order根节点 <MedItem> <MedCd></MedCd> <MedNm>2</MedNm> <MedType></MedType> <MedUnit></MedUnit> <PowderYn></PowderYn> <UseAtcYn>Y</UseAtcYn> <GroupNum></GroupNum> <MedNote></MedNote> <DschYn></DschYn> <OrderMedKey></OrderMedKey> <MedItemDose> <TakeDt></TakeDt> <TakeDays></TakeDays> <DrtsCd></DrtsCd> <DrtsNm></DrtsNm> <DoseList></DoseList> </MedItemDose> </MedItem> </OrderInfo>
100园豆是我的啦
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { string xml1 = @" <Order> <OrderInfo> <OrderNum>1</OrderNum> <OrderDt>2</OrderDt> <OrderDtm></OrderDtm> <MdctNum></MdctNum> <MdctDt></MdctDt> <PtntNum></PtntNum> <PtntNm></PtntNm> <Sex>F</Sex> <Birthday></Birthday> <InOutClsf>I</InOutClsf> <HsptCd></HsptCd> <DptmtCd></DptmtCd> <DoctorNm></DoctorNm> <WardCd></WardCd> <RoomNum>53</RoomNum> <BedNum></BedNum> <EmgClsf>N</EmgClsf> <DschClsf>I</DschClsf> <OrderClsf> </OrderClsf> <Note></Note> <DataClsf></DataClsf> <DspsOpt></DspsOpt> <SickCd></SickCd> <SickNm></SickNm> <AllergyNm></AllergyNm> <ReqSiteCd></ReqSiteCd> <ReqSiteNm></ReqSiteNm> <MedItem> <MedCd>这个是为了演示</MedCd> <MedNm></MedNm> <MedType></MedType> <MedUnit></MedUnit> <PowderYn></PowderYn> <UseAtcYn>Y</UseAtcYn> <GroupNum></GroupNum> <MedNote></MedNote> <DschYn></DschYn> <OrderMedKey>1</OrderMedKey> <MedItemDose> <TakeDt></TakeDt> <TakeDays></TakeDays> <DrtsCd></DrtsCd> <DrtsNm></DrtsNm> <DoseList></DoseList> </MedItemDose> </MedItem> </OrderInfo> <OrderInfo> <OrderNum>1</OrderNum> <OrderDt>2</OrderDt> <OrderDtm></OrderDtm> <MdctNum></MdctNum> <MdctDt></MdctDt> <PtntNum></PtntNum> <PtntNm></PtntNm> <Sex>F</Sex> <Birthday></Birthday> <InOutClsf>I</InOutClsf> <HsptCd></HsptCd> <DptmtCd></DptmtCd> <DoctorNm></DoctorNm> <WardCd></WardCd> <RoomNum>53</RoomNum> <BedNum></BedNum> <EmgClsf>N</EmgClsf> <DschClsf>I</DschClsf> <OrderClsf> </OrderClsf> <Note></Note> <DataClsf></DataClsf> <DspsOpt></DspsOpt> <SickCd></SickCd> <SickNm></SickNm> <AllergyNm></AllergyNm> <ReqSiteCd></ReqSiteCd> <ReqSiteNm></ReqSiteNm> <MedItem> <MedCd>这是一个示例数据</MedCd> <MedNm></MedNm> <MedType>MedType</MedType> <MedUnit>MedType</MedUnit> <PowderYn>MedType</PowderYn> <UseAtcYn>Y</UseAtcYn> <GroupNum></GroupNum> <MedNote></MedNote> <DschYn></DschYn> <OrderMedKey>2</OrderMedKey> <MedItemDose> <TakeDt>MedType</TakeDt> <TakeDays>MedType</TakeDays> <DrtsCd>MedType</DrtsCd> <DrtsNm></DrtsNm> <DoseList></DoseList> </MedItemDose> </MedItem> </OrderInfo></Order>"; // string xml2 = @" // <OrderInfo> // <OrderNum>1</OrderNum> // <OrderDt>2</OrderDt> // <OrderDtm></OrderDtm> // <MdctNum></MdctNum> // <MdctDt></MdctDt> // <PtntNum></PtntNum> // <PtntNm></PtntNm> // <Sex>F</Sex> // <Birthday></Birthday> // <InOutClsf>I</InOutClsf> // <HsptCd></HsptCd> // <DptmtCd></DptmtCd> // <DoctorNm></DoctorNm> // <WardCd></WardCd> // <RoomNum>53</RoomNum> // <BedNum></BedNum> // <EmgClsf>N</EmgClsf> // <DschClsf>I</DschClsf> // <OrderClsf> </OrderClsf> // <Note></Note> // <DataClsf></DataClsf> // <DspsOpt></DspsOpt> // <SickCd></SickCd> // <SickNm></SickNm> // <AllergyNm></AllergyNm> // <ReqSiteCd></ReqSiteCd> // <ReqSiteNm></ReqSiteNm> // // <MedItem> // <MedCd>这是一个示例数据</MedCd> // <MedNm></MedNm> // <MedType>MedType</MedType> // <MedUnit>MedType</MedUnit> // <PowderYn>MedType</PowderYn> // <UseAtcYn>Y</UseAtcYn> // <GroupNum></GroupNum> // <MedNote></MedNote> // <DschYn></DschYn> // <OrderMedKey>2</OrderMedKey> // <MedItemDose> // <TakeDt>MedType</TakeDt> // <TakeDays>MedType</TakeDays> // <DrtsCd>MedType</DrtsCd> // <DrtsNm></DrtsNm> // <DoseList></DoseList> // </MedItemDose> // </MedItem> // // </OrderInfo>"; XElement FW = XElement.Parse(xml1); //将所有接收到的xml保存到一个 线性表中 List<string> list = new List<string>(); var xv = FW.Elements("OrderInfo"); foreach (var item in xv) { list.Add(item.ToString()); } //将 xml分组,以 orderNUM(订单号)来进行分组,我们认为只要 订单号一样的 xml就是同一组数据 IEnumerable<IGrouping<string, string>> q = list.GroupBy(new Func<string, string>((item) => { XElement root = XElement.Parse(item); string ak = root.Element("OrderNum").Value; return ak; })); //遍历分好组的 数据 foreach (var item in q) { //从线性表 中找到 订单号 是一样的 订单 var p = list.Where((gh) => { XElement root = XElement.Parse(gh); string hj = root.Element("OrderNum").Value; if (hj.Equals(item.Key)) { return true; } else { return false; } }); //将找到的数据整合到一块 XDocument xdoc = new XDocument(); //XElement root2 = new XElement("Ran"); XElement root1 = new XElement("OrderInfo"); //xdoc.Add(root2); xdoc.Add(root1); root1.Add(new XElement("OrderNum", "1"), new XElement("OrderDt", "1"), new XElement("OrderDtm", "1"), new XElement("MdctNum", "1"), new XElement("MdctDt", "1"), new XElement("PtntNum", "1"), new XElement("PtntNm", "1"), new XElement("Sex", "1"), new XElement("Birthday", "1")); // 自己增加需要的数据项 foreach (string 订单详情 in p) { //可以对订单详情进行数据拆解 //这里就不拆解了,直接写上 死数据,拆解方法自己去写 //还是写一个例子吧: XElement jk = XElement.Parse(订单详情); string MedCd = jk.Element("MedItem").Element("MedCd").Value; string MedNm = jk.Element("MedItem").Element("MedNm").Value; string MedType = jk.Element("MedItem").Element("MedType").Value; string MedUnit = jk.Element("MedItem").Element("MedUnit").Value; string PowderYn = jk.Element("MedItem").Element("PowderYn").Value; string TakeDt = jk.Element("MedItem").Element("MedItemDose").Element("TakeDt").Value; string TakeDays = jk.Element("MedItem").Element("MedItemDose").Element("TakeDays").Value; root1.Add(new XElement("MedItem", new XElement("MedCd", MedCd), new XElement("MedNm", MedNm), new XElement("MedType", MedType), new XElement("MedUnit", MedUnit), new XElement("MedItemDose", new XElement("TakeDt", TakeDt), new XElement("TakeDays", TakeDays)))); } Console.WriteLine(xdoc); } } } }
又是你。。。
是啊,大神(-。-;)
@骑着蜗牛耍流氓: 别叫我大神,你的分这么多,我确实很想要,但我也确实懒的给你写代码,因为这没什么好处,而且也确实是自己随便搜一下就能出来的事儿。
@顾晓北: 我只会点前端语言,后台代码搜到 我看不懂不知道怎么凑到一块来写這个功能
@骑着蜗牛耍流氓: 话说,你找个人替你写(你们公司的)都比网上直接要快啊,再说了,你看不懂为啥让你来写啊?
@顾晓北: 我的公司不是软件开发公司,没有人会编程
@骑着蜗牛耍流氓: 算了,给你写一下吧,就是把
<MedItem> <MedCd></MedCd> <MedNm>2</MedNm> <MedType></MedType> <MedUnit></MedUnit> <PowderYn></PowderYn> <UseAtcYn>Y</UseAtcYn> <GroupNum></GroupNum> <MedNote></MedNote> <DschYn></DschYn> <OrderMedKey></OrderMedKey> <MedItemDose> <TakeDt></TakeDt> <TakeDays></TakeDays> <DrtsCd></DrtsCd> <DrtsNm></DrtsNm> <DoseList></DoseList> </MedItemDose> </MedItem>
拼一起呗
@骑着蜗牛耍流氓: 算啦,有人写了我就不写了。
定义第一个实体.范序列化为实体数组.
对这个数组.groupby(m=>new{要判断重复的那些字段.这里可能需要自己写比较器})
.select(m=>new{m.Key把重复的字段一个一个列出来,MedItemList=m.Value})
返回值xml序列化就是你要的
不好意思,专家你写的太模糊了,我小白看不懂,我就想要能执行的代码做参考
你一个操作XML搞了好几天了吧……你们老板还要你啊——
是我在帮老板忙