Click here to Skip to main content
16,004,647 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have an XML file and i want to make a data table and bind it in grid view , but the data must taken from the XML file according to attributes not the tag
the first attribute is "m" and it represents the row index, the other attribute is "s" and it represents the column index
if the attribute doesn't mentioned in some tags the default value for it is "1"

the outputs must shown in gridview like this form

ASP.NET
<asp:GridView id="grdBank" runat="server" AutoGenerateColumns="False" CellPadding="0" >
                               <Columns>

                                   <asp:BoundField HeaderText="Repay date" DataField="repay">
                                       <HeaderStyle Font-Bold="True"></HeaderStyle>
                                   </asp:BoundField>

                                      <asp:BoundField HeaderText="Interest" DataField="interest">
                                       <HeaderStyle Font-Bold="True"></HeaderStyle>
                                   </asp:BoundField>

                                <asp:BoundField HeaderText="Penalty interest" DataField="penalty_interest">
                                       <HeaderStyle Font-Bold="True"></HeaderStyle>
                                   </asp:BoundField>

                               <asp:BoundField HeaderText="Penalty spread" DataField="penalty_spread">
                                       <HeaderStyle Font-Bold="True"></HeaderStyle>
                                   </asp:BoundField>

                               <asp:BoundField HeaderText="Others (CE+CS)" DataField="others">
                                       <HeaderStyle Font-Bold="True"></HeaderStyle>
                                   </asp:BoundField>

                               </Columns>
                             </asp:GridView>



XML File is:

XML
<row>
<c24>20160201</c24>
<c24 m="2">20160131</c24>
<c24 m="3">20160101</c24>
<c24 m="4">20151231</c24>
<c24 m="5">20151201</c24>
<c24 m="6">20151130</c24>
<c24 m="7">20151102</c24>
</row>



<row>
<c28>IN</c28>
<c28 m="1" s="2">PE</c28>
<c28 m="1" s="3">PS</c28>

<c28 m="2">PR</c28>
<c28 m="2" s="2">PE</c28>
<c28 m="2" s="3">PS</c28>

<c28 m="3">IN</c28>
<c28 m="3" s="2">PE</c28>
<c28 m="3" s="3">PS</c28>
<c28 m="3" s="4">CE</c28>
<c28 m="3" s="5">CS</c28>

<c28 m="4">PR</c28>
<c28 m="4" s="2">PE</c28>
<c28 m="4" s="3">PS</c28>
<c28 m="4" s="4">CE</c28>
<c28 m="4" s="5">CS</c28>

<c28 m="5">IN</c28>
<c28 m="5" s="2">PE</c28>
<c28 m="5" s="3">PS</c28>
<c28 m="5" s="4">CE</c28>
<c28 m="5" s="5">CS</c28>

<c28 m="6">PR</c28>
<c28 m="6" s="2">PE</c28>
<c28 m="6" s="3">PS</c28>
<c28 m="6" s="4">CE</c28>
<c28 m="6" s="5">CS</c28>

<c28 m="7">PR</c28>
<c28 m="7" s="2">PE</c28>
<c28 m="7" s="3">PS</c28>
<c28 m="7" s="4">CE</c28>
<c28 m="7" s="5">CS</c28>
</row>




<row>
<c29>1334.564</c29>
<c29 m="1" s="2">9.509</c29>
<c29 m="1" s="3">3.003</c29>

<c29 m="2">3900</c29>
<c29 m="2" s="2">28.817</c29>
<c29 m="2" s="3">9.1</c29>

<c29 m="3">1366.468</c29>
<c29 m="3" s="2">10.097</c29>
<c29 m="3" s="3">3.189</c29>
<c29 m="3" s="4">10.818</c29>
<c29 m="3" s="5">3.416</c29>

<c29 m="4">3900</c29>
<c29 m="4" s="2">28.817</c29>
<c29 m="4" s="3">9.1</c29>
<c29 m="4" s="4">31.904</c29>
<c29 m="4" s="5">10.075</c29>

<c29 m="5">1353.571</c29>
<c29 m="5" s="2">10.001</c29>
<c29 m="5" s="3">3.159</c29>
<c29 m="5" s="4">21.789</c29>
<c29 m="5" s="5">6.881</c29>

<c29 m="6">3900</c29>
<c29 m="6" s="2">28.817</c29>
<c29 m="6" s="3">9.1</c29>
<c29 m="6" s="4">63.808</c29>
<c29 m="6" s="5">20.15</c29>

<c29 m="7">1290.211</c29>
<c29 m="7" s="2">9.533</c29>
<c29 m="7" s="3">3.011</c29>
<c29 m="7" s="4">30.641</c29>
<c29 m="7" s="5">9.678</c29>
</row>


What I have tried:

I tried this code
C#
XmlTextReader reader = null;
          DataTable Items = new DataTable();
                     Items.Columns.Add("repay");
                     Items.Columns.Add("interest");
                     Items.Columns.Add("penalty_interest");
                     Items.Columns.Add("penalty_spread");
                     Items.Columns.Add("others");
                     DataRow dr=Items.NewRow();
         try
 {

    //Load the reader with the XML file.
    reader = new XmlTextReader("attrs.xml");

    //Read the m attribute.
    reader.MoveToContent();

              for (int i = 0; i < reader.AttributeCount; i++) {
    string m = reader.GetAttribute("m");

          dr["repay"]= Convert.ToString(new Random().Next(5, 55));
         //dt.Rows.Add(row1);

    //dr[AttName] = reader.Value;
              }


  }



  finally
  {
     if (reader != null)
       reader.Close();
   }
Posted
Updated 28-Feb-16 5:24am
v2
Comments
Patrice T 28-Feb-16 11:16am    
What is your question ?
Ibrahim Kanaan 29-Feb-16 4:40am    
read the post a gain :)

1 solution

Unless the XML document is huge, I suggest using an XmlDocument (my preference) or XDocument rather than an XmlTextReader. XmlNode.SelectNodes Method (String) (System.Xml)[^]
Then you can simply use XPath to access the contents (including attributes) by name. XML and XPath[^]
 
Share this answer
 
Comments
Ibrahim Kanaan 29-Feb-16 8:56am    
:(i didn't find the solution
PIEBALDconsult 29-Feb-16 9:04am    
The solution is within you; it is not "out there" to be found.
Ibrahim Kanaan 29-Feb-16 9:08am    
this website is to share experiences with each other
you copied and pasted links i viewed it before on microsoft website
your answer didn't add anything valuable to me

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