0

Dear all;

I have the following code below and I have been spending time trying to debug it but I can't understand why I am getting the illegal character error message. See my code below. Thank you.

workheader.master.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq;
using System.Xml;

public partial class workheader : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        load();
    }

    protected void load()
    {
        
       
       XDocument doc = XDocument.Load(Server.MapPath("App_Data/XMLFile.xml"));

        foreach (XElement menuItem in doc.Elements("MainMenu").Elements("MenuItem"))
        {
            string a = menuItem.Element("LinkURL").Value;
            string b = menuItem.Element("LinkLabel").Value;


            hp.Text = b;
            hp.NavigateUrl = a;

            if (doc.Elements("submenu") != null)
            {
                foreach (XElement subItem in doc.Elements("MainMenu").Elements("MenuItem").Elements("SubMenu").Elements("SubMenuItem"))
                {
                    string c = subItem.Element("LinkURL").Value;
                }
            }

        }


    }

}

workheader.master

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="workheader.master.cs" Inherits="workheader" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">

    <asp:HyperLink ID="hp" runat="server" />

    <div>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

XML code

<?xml version="1.0" encoding="utf-8" ?>
<MainMenu>
	<MenuItem>
		<LinkLabel>Begin</LinkLabel>
		<LinkURL>DefaultA.aspx</LinkURL>
	</MenuItem>
	<MenuItem>
		<LinkLabel>
			Default B
		</LinkLabel>
		<LinkURL>
			DefaultB.aspx
		</LinkURL>
	</MenuItem>

	<MenuItem>
		<LinkLabel>
			Default reports
		</LinkLabel>
		<LinkURL>
			DefaultC.aspx
		</LinkURL>
		<SubMenu>
			<SubMenuItem>
				<LinkLabel>
					Default C established
				</LinkLabel>
				<LinkURL>
					DefaultC.aspx
				</LinkURL>
			</SubMenuItem>

			<SubMenuItem>
				<LinkLabel>
					Default D
				</LinkLabel>
				<LinkURL>
					DefaultD.aspx
				</LinkURL>
			</SubMenuItem>

			<SubMenuItem>
				<LinkLabel>
					Default E
				</LinkLabel>
				<LinkURL>
					DefaultE.aspx
				</LinkURL>
			</SubMenuItem>
			
			
		</SubMenu>
	</MenuItem>
</MainMenu>

All help is appreciated. Thank you.

2
Contributors
2
Replies
3
Views
6 Years
Discussion Span
Last Post by olybobo
0

Xml preserve the whitespaces so you need to use Trim() to remove blanks from the both side of the string value.

hp.Text = b.Trim();
 hp.NavigateUrl = a.Trim();
0

Ok, that fix the illegal error problem, however though the code is currently not doing much unfortunately, it doesnt show the associated submenu when the main menu is clicked on unfortunately.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.