c# - how to reoder the xml -
workign on xml reorder xml follows:
<subjects> <subject> <name></name> <height></height> <addresss> <address> <city>ab</city> </address> </addresses> </subject> <subject> <name></name> <height></height> <addresss> <address> <city>cd</city> </address> </addresses> </subject> </subjects>
now want creat xml follows adding address reference subject
<order> <subjects> <subject> <name></name> <height></height> <address ref="a1"/> </subject> <subject> <name></name> <height></height> <address ref="a2"/> </subject> </subjects> <addresss> <address id="a1"> <city>ab</city> </address> <address id="a2"> <city>ab</city> </address> </addresses> </order>
how can accomplish sql or linq?
using xmldocument
class can use importnode
method transfer element document another, below:
var index = 0; var output = new xmldocument(); var order = output.appendchild(output.createelement("order" )); var subjects = order .appendchild(output.createelement("subjects" )); var addresses = order .appendchild(output.createelement("addresses")); foreach (xmlelement subject in input.selectnodes("/subjects/subject")) { index++; var address = (xmlelement)subject.removechild(subject.selectsinglenode("addresses")); address = (xmlelement)address.firstchild; // addresses address address.setattribute("id", index.tostring()); var newaddress = (xmlelement)subject.appendchild(input.createelement("address")); newaddress.setattribute("ref", index.tostring()); subjects .appendchild(output.importnode(subject, true)); addresses.appendchild(output.importnode(address, true)); } output.save(console.out); console.readline();
Comments
Post a Comment