Click here to Skip to main content
15,888,113 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
hi, this is my xml
XML
<?xml version="1.0"?>
-<props>
<specific_criteria>NONE</specific_criteria>
<specific_condition>NEW</specific_condition>
-<specific_disposition>
<disposition>NONE</disposition>
</specific_disposition>
<specific_model>NONE</specific_model>
<specific_velocity>NONE</specific_velocity>
<specific_cons_model>NONE</specific_cons_model>
-<specific_program>
<program>NONE</program>
</specific_program>
<specific_operation>NONE</specific_operation>
<specific_oem>NONE</specific_oem>
<specific_esn_status/>
<special_criteria/>
<same_disposition>N</same_disposition>
<same_model>N</same_model>
<same_sku>N</same_sku>
<same_esn_status>N</same_esn_status>
<same_cons_model>N</same_cons_model>
<same_condition>N</same_condition>
<same_velocity>N</same_velocity>
<same_receipt>N</same_receipt>
<same_oem>N</same_oem>
</props>


and need to modify like below
XML
<props>
  <specific_criteria id=1>NONE</specific_criteria>
  <specific_condition id=2>NEW</specific_condition>
  <specific_disposition>
    <disposition id=3>NONE</disposition>
  </specific_disposition>
  <specific_model id=4>NONE</specific_model>
  <specific_velocity id=5>NONE</specific_velocity>
  <specific_cons_model id=6>NONE</specific_cons_model>
  <specific_program>
    <program id=7>NONE</program>
  </specific_program>
  <specific_operation id=8>NONE</specific_operation>
  <specific_oem id=9>NONE</specific_oem>
  <specific_esn_status id=10/>
  <special_criteria id=11/>
  <same_disposition id=12>N</same_disposition>
  <same_model id=13>N</same_model>
  <same_sku id=14>N</same_sku>
  <same_esn_status id=15>N</same_esn_status>
  <same_cons_model id=16>N</same_cons_model>
  <same_condition id=17>N</same_condition>
  <same_velocity id=18>N</same_velocity>
  <same_receipt id=19>N</same_receipt>
  <same_oem id=20>N</same_oem>
</props>
Posted
Updated 29-Dec-15 11:29am
v3
Comments
Akki Challa 29-Dec-15 15:43pm    
--- moved to the question ---
Sergey Alexandrovich Kryukov 29-Dec-15 16:00pm    
You forgot to tag your language, platform, technology and other detail. If the language is just "XML", you do it using a text editor. :-)
—SA
Akki Challa 29-Dec-15 16:37pm    
using c#.net dynamically and <specific_cons_model id="10" value="none">NONE

1 solution

Try something like this:
C#
string scontent = @"<?xml version='1.0'?>
<props>
<specific_criteria>NONE</specific_criteria>
<specific_condition>NEW</specific_condition>
<specific_disposition>
<disposition>NONE</disposition>
</specific_disposition>
<specific_model>NONE</specific_model>
<specific_velocity>NONE</specific_velocity>
<specific_cons_model>NONE</specific_cons_model>
<specific_program>
<program>NONE</program>
</specific_program>
<specific_operation>NONE</specific_operation>
<specific_oem>NONE</specific_oem>
<specific_esn_status/>
<special_criteria/>
<same_disposition>N</same_disposition>
<same_model>N</same_model>
<same_sku>N</same_sku>
<same_esn_status>N</same_esn_status>
<same_cons_model>N</same_cons_model>
<same_condition>N</same_condition>
<same_velocity>N</same_velocity>
<same_receipt>N</same_receipt>
<same_oem>N</same_oem>
</props>"; 

XDocument xdoc = XDocument.Parse(scontent);

var nodes2change =  xdoc.Root.Descendants().Where(x=>x.Descendants().Count() == 0 && (string)x.Value!=string.Empty);
int i = 0;
foreach (XElement x in nodes2change)
{
	i++;
	x.SetAttributeValue("id", i);
}

//xdoc.Save("newFullFileName.xml");



Result:
XML
<props>
  <specific_criteria id="1">NONE</specific_criteria>
  <specific_condition id="2">NEW</specific_condition>
  <specific_disposition>
    <disposition id="3">NONE</disposition>
  </specific_disposition>
  <specific_model id="4">NONE</specific_model>
  <specific_velocity id="5">NONE</specific_velocity>
  <specific_cons_model id="6">NONE</specific_cons_model>
  <specific_program>
    <program id="7">NONE</program>
  </specific_program>
  <specific_operation id="8">NONE</specific_operation>
  <specific_oem id="9">NONE</specific_oem>
  <specific_esn_status />
  <special_criteria />
  <same_disposition id="10">N</same_disposition>
  <same_model id="11">N</same_model>
  <same_sku id="12">N</same_sku>
  <same_esn_status id="13">N</same_esn_status>
  <same_cons_model id="14">N</same_cons_model>
  <same_condition id="15">N</same_condition>
  <same_velocity id="16">N</same_velocity>
  <same_receipt id="17">N</same_receipt>
  <same_oem id="18">N</same_oem>
</props>


Above code needs to be improved. Feel free to change it!

For further information, please see: XElement.SetAttributeValue Method (XName, Object) (System.Xml.Linq)[^]

Tip: remove && (string)x.Value!=string.Empty from Where statement to get result as you expect ;)
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900