Click here to Skip to main content
15,905,419 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have one XML file::

HTML
<details>
    <data>
        <find>TAG11</find>
        <data_type>Static Data</data_type>
        <static_value>Varun</static_value>
        <field_name>Not Applicable</field_name>
        <table_name>Batch_Master</table_name>
    </data>
    <data>
        <find>VAL1</find>
        <data_type>Dynamic Data</data_type>
        <static_value>Not Applicable</static_value>
        <field_name>Product Name</field_name>
        <table_name>Batch_Master</table_name>
    </data>
    <data>
        <find>TAG1</find>
        <data_type>Dynamic Data</data_type>
        <static_value>Not Applicable</static_value>
        <field_name>Country Name</field_name>
        <table_name>Batch_Master</table_name>
    </data>
    <data>
        <find>VAL11</find>
        <data_type>Static Data</data_type>
        <static_value>Nayak</static_value>
        <field_name>Not Applicable</field_name>
        <table_name>Batch_Master</table_name>
    </data>
    <data>
        <find>VAL2</find>
        <data_type>Dynamic Data</data_type>
        <static_value>Not Applicable</static_value>
        <field_name>Batch Code</field_name>
        <table_name>Batch_Master</table_name>
    </data>
    <data>
        <find>TAG12</find>
        <data_type>Dynamic Data</data_type>
        <static_value>Not Applicable</static_value>
        <field_name>Carton Number</field_name>
        <table_name>Batch_Master</table_name>
    </data>
    <data>
        <find>VAL3</find>
        <data_type>Dynamic Data</data_type>
        <static_value>Not Applicable</static_value>
        <field_name>Product Strength</field_name>
        <table_name>Batch_Master</table_name>
    </data>
   
    <data>
        <find>TAG10</find>
        <data_type>Not Selected</data_type>
        <static_value>Not Applicable</static_value>
        <field_name>Not Selected</field_name>
        <table_name>Batch_Master</table_name>
    </data>
</details>



Now I need to store find, and static_value values in string only when data_type is Static Data,

I dont have much idea about XMLtoLinq bt I write this function


C#
var xmlStr = File.ReadAllText(@"D:\Test\DATA020913.xml");
            var str = XElement.Parse(xmlStr);

            var result = str.Elements("DATA").
            Where(x => x.Element("Data_Type").Value.Equals("Static Data")).ToList();
            MessageBox.Show(result.ToString());   

            Console.WriteLine(result);


by this I getting Only Number Of times static data comes,
bt i also want values in of find, and static_value values in variable

FYI:: later on I will replace this varibles values in my text file.


kindly help me for this..!!
Posted
Updated 4-Sep-13 22:25pm
v4

Hello Varun,

You can get the list of find, and static_value by using this query.

Try this once -

var find_result = str.Elements("data").Where(s => s.Element("data_type").Value.Equals("Static Data")).Select(s => s.Element("find"));

var static_value_result = str.Elements("data").Where(s => s.Element("data_type").Value.Equals("Static Data")).Select(s => s.Element("static_value")); 


It means you have to maintain two list here.


If you want the all values from data tag then

var find_result = str.Elements("data").Where(s => s.Element("data_type").Value.Equals("Static Data")).Select(s => s.Elements());
 
Share this answer
 
Sometimes I prefer using XPath instead of Linq. In this case the XPath filter "details/data[data_type='Static Data']" will give you this result:
XML
<data>
<find>TAG11</find>
<data_type>Static Data</data_type>
<static_value>Varun</static_value>
<field_name>Not Applicable</field_name>
<table_name>Batch_Master</table_name>
</data>
-----------------------
<data>
<find>VAL11</find>
<data_type>Static Data</data_type>
<static_value>Nayak</static_value>
<field_name>Not Applicable</field_name>
<table_name>Batch_Master</table_name>
</data>

You can create one instance of XmlDocument, load the Xml source and use the method SelectNodes() with the XPath statement "<code>details/data[data_type='Static Data']".

For testing XPath statements you may use this tool here: http://www.online-toolz.com/tools/xpath-editor.php[^]. This information here: http://stackoverflow.com/questions/9683054/xpath-to-select-element-based-on-childs-child-value[^] can also be helpful.
 
Share this answer
 

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