• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 754
  • Last Modified:

XML data in ASP.NET

Hi

I have to create a FAQ page in ASP.NET
for example

i need to design the below format of header and listitems
where header is text and listeitems are hyperlinks

but i dont want to hard code Header or the listitems text or its Url's
i want all to be writen in XML file such that ASP.NET reads XML file and generates this output
later i can add/remove Header and URL from XML file




New to Programming   (header)
    o How to Start      (listitems)
    o What are the Requirements

Allready a member
    o How to renew my membership
    o What are the payment methods
.....
....
...
   

Please help me how to design the XML file structure and ASP.NET code which reads from it and displays in above format
0
DOT_NET
Asked:
DOT_NET
1 Solution
 
DOT_NETAuthor Commented:
can someone give me working sample
0
 
diablocuteCommented:
(1)Hi,there. I'm assuming that your xml file will look similar to below
<FAQ>
    <Header Name="New to programming">
        <listitem Url="/howtostart.aspx" Name="How to start" />
    </Header>
    <Header Name="Aleady a member">
        <listitem Url="/Howtorenew.aspx" Name="How to renew membership"/>
    </Header>
</FAQ>

(2) In serverside
// Create an xml document & Load the XMl from the file
XmlDocument doc = new XmlDocument();                  
doc.Load(filePath); // path of your XML file

// Retrieve all header from the xml.
XmlNodeList headers  = doc.SelectNodes("FAQ/Header");
StringBuilder headerString = new StringBuilder();

// Iterate through all the headers
foreach ( XmlNode headerNode in headers )
{
// Add headername to the string.
headerString.Append("<h2>" ).Append(headerNode.Attributes["Name"].Value ).Append("</h2><ul>");

// Get all listitems in the current header.
XmlNodeList listitems = headerNode.SelectNodes("listitem");

// Loop through all listitems in the current header and add to the string.
foreach ( XmlNode listNode in listitems )
{
   headerString.Append("<LI><a href=").Append(listNode.Attributes ["Url"].Value).Append( ">").Append( listNode.Attributes["Name"].Value).Append("</a>");
}
headerString.Append("</ul>");
// Pass headerString to the page output using Response.Write
// or assigning into a web control (such as label, panel, etc)
============================================
fyi, I prefer to use StringBuilder, but you can always use string. (Be sure to add Using System.Text if you want to use StringBuilder)
hope this is what you're looking for =)


0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
diablocuteCommented:
oops, i forgot to add one more  }
after headerString.Append("</ul>");
0
 
jnhorstCommented:
Here's another approach:  With your ASP.NET project open, click the Project menu in VS and select Add New Item.  Select the Dataset icon in the dialog and give the dataset a filename like FAQ.xsd.  You will get a blank yellowish designer.  In this designer, right click and select Add >> New Element.  You will get a box with two columns.  At the top the name will be element1.  Change this to Header.  Then add some columns that would belong to a Header table (if you had one).  The left column of the box is for the column name; the right for the data type.  Do the same thing and create a ListItems element.  Make sure the Header element has a field that will be a unique key to each Header.  Then make sure the ListItems element has a column that will reference the Header's key.  These elements are defined in an xml schema that ADO.NET uses to create an ADO.NET dataset with data tables for each of these elements.

After creating the elements for your Header and ListItems, right click the dataset designer and select Add >> New Relation.  This is where you join the two tables on the Header key.

Once you have done this, you can add this dataset to a page and add rows to the Header and ListItems data tables.  If you want to save this info as xml, you call the dataset's WriteXml() method, passing it a file name to write the xml to.  Conversely, if you want to read that xml back into the dataset, you call ReadXml(), passing it the file name.

John
0
 
razoCommented:
what u can do is use an xslt file that define the html format of each element
and the use the xml control of the .net to load both the xml file and the xslt trasnformation
0
 
DOT_NETAuthor Commented:
Hi  diablocute
i'll try your code
and get back to u
thanks :)
0

Featured Post

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now