How To change XML namespace of certain element

Funnnny

New Member
I have some set of xml generated via xmlserialization of some WCF messages.Now I want to make a generic method in which I will provide an xml filename and a prefix like \[code\]mailxml12\[/code\].Then in xml file those elements that don't have any namespace prefix in their name should be replaced with \[code\]mailxml12:\[/code\]Like source file is:\[code\]<DeliveryApptCreateRequest d2p1:ApptType="Pallet" d2p1:PickupOrDelivery="Delivery" d2p1:ShipperApptRequestID="4490660303D5" d2p1:SchedulerCRID="234234" xmlns:d2p1="http://idealliance.org/Specs/mailxml12.0a/mailxml_defs" xmlns="http://idealliance.org/Specs/mailxml12.0a/mailxml_tm"><SubmittingParty d2p1:MailerID6="123446" d2p1:CRID="342343" d2p1:MaildatUserLicense="A123" /><SubmittingSoftware d2p1:SoftwareName="asds" d2p1:Vendor="123" d2p1:Version="12" /><SubmitterTrackingID>2CAD3F71B4405EB16392</SubmitterTrackingID><DestinationEntry>No</DestinationEntry><OneTimeAppt> <PreferredAppt>2012-06-29T09:00:00Z</PreferredAppt></OneTimeAppt> <TrailerInfo> <Trailer> <TrailerNumber>A</TrailerNumber> <TrailerLength>20ft</TrailerLength> </Trailer> <Carrier> <CarrierName>N/A</CarrierName> <URL>http://test.com</URL> </Carrier> <BillOfLadingNumber>N/A</BillOfLadingNumber></TrailerInfo> </DeliveryApptCreateRequest>\[/code\]After the desired method it should be changed into all element name which doesn't have prefix with \[code\]mailxml:\[/code\]. Like \[code\]DeliveryApptCreateRequest\[/code\] should become \[code\]mailxml:DeliveryApptCreateRequest\[/code\]while element like \[code\]d2p1:CompanyName\[/code\] should remain as it is.I have tried with following code \[code\] private void RepalceFile(string xmlfile) { XmlDocument doc = new XmlDocument(); doc.Load(xmlfile); var a = doc.CreateAttribute("xmlns:mailxml12tm"); a.Value = "http://idealliance.org/Specs/mailxml12.0a/mailxml_tm"; doc.DocumentElement.Attributes.Append(a); doc.DocumentElement.Prefix = "mailxml12tm"; foreach (XmlNode item in doc.SelectNodes("//*")) { if (item.Prefix.Length == 0) item.Prefix = "mailxml12tm"; } doc.Save(xmlfile); }\[/code\]only problem with it is that root element remain as it is while all are changed as i needed
 
Back
Top