webForumDet fria alternativet

XML i listbox del 2

.NETur .NET

7 svar · 336 visningar · startad av wwwstekaren

wwwstekarenMedlem sedan apr. 2003234 inlägg
#1

För det första så vill jag tacka all som hjälpt mig med mitt förra xml datalist problem:)

Nu har jag ett nytt problem:) Det är hur det ska skrivas ut i min lista, nu skriver det ut allt som står i min xml fil inte så snyggt och med mellan slag mellan varje element i xml filen, hur gör jag nu min listbox snygg? Bifogar här nedan min kod

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.Xml.XPath;

namespace listaxml
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.ListBox ListBoxContacts;

	private void Page_Load(object sender, System.EventArgs e)
	{
		// Put user code to initialize the page here
		if (!(Page.IsPostBack))
		{
			//Response.Write(Server.MapPath("")); 
			myFunction();
		}
	}
	protected void myFunction() 
	{
		// fylla din listbox
		XmlTextReader reader = new XmlTextReader(Server.MapPath("webs.xml"));
		while (reader.Read())
		{
			// Adda varje namn till din listbox
			if ((reader.NodeType == XmlNodeType.Element) && (reader.Name=="Email"))
			reader.Read();
			//ListBoxContacts.Items.Add(reader.Value + "\<br\>");
			//Response.Write(reader.Value + "\<br\>");
	
		}

	}

	\#region Web Form Designer generated code
	override protected void OnInit(EventArgs e)
	{
		//
		// CODEGEN: This call is required by the ASP.NET Web Form Designer.
		//
		InitializeComponent();
		base.OnInit(e);
	}
	
	/// \<summary\>
	/// Required method for Designer support - do not modify
	/// the contents of this method with the code editor.
	/// \</summary\>
	private void InitializeComponent()
	{    
		this.Load += new System.EventHandler(this.Page_Load);

	}
	\#endregion
}

}

Så här ser min xml fil ut

<?xml version="1.0" standalone="yes"?>
<Webs>
<Web>
<Responsible />
<Name>Kurt</Name>
<LastName>Nilsson</LastName>
<Email>kurt.nilsson@ibm.se</Email>
<Company>IBM</Company>
<Contact>Kund</Contact>
</Web>
<Web>
<Responsible />
<Name>Kurt</Name>
<LastName>Johansson</LastName>
<Email>kurt@ibm.se</Email>
<Company>IBM</Company>
<Contact>Kund</Contact>
</Web>
</webs>

hur gör jag om jag bara vill ha ut Name och LastName i min listbox?

DinoMedlem sedan sep. 20011 914 inlägg
#2

Så här kan du göra, finns säkert bättre sätt. Du får själv göra om den till C# :)

        dim xtr as new XmlTextReader(Server.MapPath("xmltest2.xml"))
        dim fullname as string
        while xtr.read()
            if xtr.nodetype = xmlnodetype.element then
                if xtr.name = "Name" or xtr.name = "LastName" then
                    if xtr.name = "Name" then
                        xtr.read()
                        fullname &= xtr.value & " "
                    end if
                    if xtr.name = "LastName" then
                        xtr.read()
                        fullname &= xtr.value
                        lbTest.items.add(fullname)
                        fullname = ""
                    end if
                end if
            end if
        end while
        xtr.close()

red//var lite onödig kod med

wwwstekarenMedlem sedan apr. 2003234 inlägg
#3

hur då göra om till c#?

DinoMedlem sedan sep. 20011 914 inlägg
#4

Jag kör vb.net du c# så om du vill använda koden så får du göra om den till c#.
Ex
dim intCounter as integer = 0
i vb.net blir i c#
int intCounter = 0 (tror jag :) )

wwwstekarenMedlem sedan apr. 2003234 inlägg
#5

okey tackar ska kolla in detta:)

NETworkMedlem sedan juni 20011 732 inlägg
#6

Här har du ett exempel som funkar, men det är säkert en skitdålig lösning... var är renhoolooolm när man behöver honom! ;)

XmlTextReader reader = new XmlTextReader(Server.MapPath("XMLFile1.xml")); 
			string name = "";
			while (reader.Read()) { 
				if (reader.NodeType == XmlNodeType.Element) {
					if (reader.Name == "Name") {
						reader.Read();
						name = reader.Value;
					}
					if (reader.Name == "LastName") {
						reader.Read();
						name += " " + reader.Value;
					  ListBox1.Items.Add(name);
					}
				}
			}
wwwstekarenMedlem sedan apr. 2003234 inlägg
#7

Tack så jätte mycket:)

renholmMedlem sedan apr. 20012 266 inlägg
#8

Jag är här :)

Vet inte om det är den snabbaste och bästa sättet men jag gillar Serilazation dvs att du skapar en class som t.ex heter Kund och sedan en class som heter KundCollection. Kund classen skall spegla innehåller i <Web> tagarna. Dvs med publica variabler i samma namn som xml-taggarna. Sedan kör man en XmlSerialization på KundCollection och fyller den med de olika <Web> som finns i xml filen. Där efter sätter du bara din KundCollecion som datasource på listbox och kör .DataBind() så blir det nog bra. Sedan om det behövs formateras lite mer så kan man nog säker fixa det. Mer information här: http://samples.gotdotnet.com/quickstart/howto/doc/xmlserialization/rwobjfromxml.aspx

133 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)