Click here to Skip to main content
15,912,897 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Hi All,

I wanted to loop through the XML attributes below is my XML output
XML
<results>
<response mode="all" value=""/>
<statements>

<table table_name="Year To Date (Lumber/TVM Paint are included in Total Sales)">
<table_col_headings col_heading_4="Thru Mar 2016" col_heading_5="Var %" col_heading_6="Thru Mar 2015" col_heading_7="Var %" col_heading_8="Thru Mar 2014" />
<table_rows>
<table_row row_caption="Stock" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="Event" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="Handled" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="Direct Ship" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="Total Sales" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="Lumber" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="TVM Paint" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
</table_rows>
</table>

<table table_name="Period End (Lumber/TVM Paint are included in Total Sales)">
<table_col_headings col_heading_4="Mar 2016" col_heading_5="Var %" col_heading_6="Mar 2015" col_heading_7="Var %" col_heading_8="Mar 2014" />
<table_rows>
<table_row row_caption="Stock" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="Event" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="Handled" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="Direct Ship" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="Total Sales" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="Lumber" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
<table_row row_caption="TVM Paint" col_data4="0" col_data5="0" col_data6="0" col_data7="0" col_data8="0" />
</table_rows>
</table>

<table table_name="Year End (Lumber/TVM Paint are included in Total Sales)">
<table_col_headings col_heading_4="Year 2015" col_heading_5="Var %" col_heading_6="Year 2014" col_heading_7="" col_heading_8="" />
<table_rows>
<table_row row_caption="Stock" col_data4="0" col_data5="0" col_data6="0" col_data7="" col_data8="" />
<table_row row_caption="Event" col_data4="0" col_data5="0" col_data6="0" col_data7="" col_data8="" />
<table_row row_caption="Handled" col_data4="0" col_data5="0" col_data6="0" col_data7="" col_data8="" />
<table_row row_caption="Direct Ship" col_data4="0" col_data5="0" col_data6="0" col_data7="" col_data8="" />
<table_row row_caption="Total Sales" col_data4="0" col_data5="0" col_data6="0" col_data7="" col_data8="" />
<table_row row_caption="Lumber" col_data4="0" col_data5="0" col_data6="0" col_data7="" col_data8="" />
<table_row row_caption="TVM Paint" col_data4="0" col_data5="0" col_data6="0" col_data7="" col_data8="" />
</table_rows>
</table>
</statements>
</results>

But i'm not sure how do i need to bind the columns of
table_row
element. Appreciate your helps.

What I have tried:

I have tried
c3
XmlNode resultNode = xmlDoc.SelectSingleNode("results", nsmgr);
XmlNode userNodeTable = resultNode.SelectSingleNode("statements/table", nsmgr);
if (userNodeTable != null)
{
    statementsReport.TableName = userNodeTable.Attributes["table_name"] != null ? userNodeTable.Attributes["table_name"].Value : string.Empty;
    XmlNode userNodeColumnHeaders = resultNode.SelectSingleNode("statements/table/table_col_headings", nsmgr);
    foreach (XElement nodes in userNodeColumnHeaders.NextSibling)
    {
        statementsReport.CoulmnHeading4 = nodes.Element("col_heading_4")!= null ? nodes.Element("col_heading_4").Value : string.Empty;
    }
}

I'm getting an Exception as "Unable to cast object of type 'System.Xml.XmlElement' to type 'System.Xml.Linq.XElement"
Posted
Updated 20-Apr-16 3:42am
v2
Comments
Richard Deeming 20-Apr-16 9:57am    
You can't mix types from System.Xml and System.Xml.Linq - they're two completely different ways to read an XML document.
sahmed3 21-Apr-16 1:26am    
Hi richard,
Do you have any idea how to loop with XML attributes
Richard Deeming 21-Apr-16 7:35am    
Change XElement nodes to XmlElement nodes.
Sinisa Hajnal 21-Apr-16 2:36am    
How about using plain foreach statement? In outer loop you go through elements, in the inner through attributes of said element.

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