Solved

XML data in ASP.NET

Posted on 2004-10-13
7
733 Views
Last Modified: 2013-11-25
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
Comment
Question by:DOT_NET
7 Comments
 
LVL 17

Expert Comment

by:AerosSaga
ID: 12304144
0
 

Author Comment

by:DOT_NET
ID: 12304362
can someone give me working sample
0
 
LVL 2

Accepted Solution

by:
diablocute earned 125 total points
ID: 12305204
(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
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
LVL 2

Expert Comment

by:diablocute
ID: 12305211
oops, i forgot to add one more  }
after headerString.Append("</ul>");
0
 
LVL 10

Expert Comment

by:jnhorst
ID: 12305241
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
 
LVL 8

Expert Comment

by:razo
ID: 12305520
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
 

Author Comment

by:DOT_NET
ID: 12310253
Hi  diablocute
i'll try your code
and get back to u
thanks :)
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Preface In the first article: A Better Website Login System (http://www.experts-exchange.com/A_2902.html) I introduced the EE Collaborative Login System and its intended purpose. In this article I will discuss some of the design consideratio…
Preface This is the third article about the EE Collaborative Login Project. A Better Website Login System (http://www.experts-exchange.com/A_2902.html) introduces the Login System and shows how to implement a login page. The EE Collaborative Logi…
The viewer will learn the benefit of using external CSS files and the relationship between class and ID selectors. Create your external css file by saving it as style.css then set up your style tags: (CODE) Reference the nav tag and set your prop…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question