webForumDet fria alternativet

Läsa in XML-fil

.NET

13 svar · 549 visningar · startad av aleborg

Medlem sedan jan. 20013 341 inlägg
Frågan#1

Jag har en xml-fil som ser ut så här:
<?xml version="1.0" ?>
<envoxstore>
<product name="Basic">
<price>6207.80</price>
</product>
<product name="Speech">
<price>7318.70</price>
</product>
<product name="Advanced">
<price>8498.60</price>
</product>
<product name="Comprehensive">
<price>13958.60</price>
</product>
</envoxstore>

och nu vill jag lägga in dom olika priserna i olika labels, det är endast 4 st priser så jag vill göra det på enklast tänkbara sätt!
Men hur? Har aldrig rört området xml tidigare...

Medlem sedan dec. 19998 277 inlägg
#2

http://www.w3schools.com/xml/default.asp nått som kan hjälpa kanske?

Medlem sedan dec. 19998 577 inlägg
#3

Här har du hur man lägger in XMLdokument i ett DataSet, sedan är det bara att skicka ut det till dina Labels:
http://www.msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlxmldatadocumentclassdatasettopic.asp

Medlem sedan jan. 20013 341 inlägg
#4

Provade med det här:

			XmlDataDocument doc = new XmlDataDocument();
			doc.DataSet.ReadXmlSchema(Server.MapPath("../shop/products.xsd")); 
			doc.Load(Server.MapPath("../shop/products.xml"));

			DataTable price = doc.DataSet.Tables["products"];
			lblBasic.Text = price.Rows[0]["price"].ToString();

men får:
System.NullReferenceException: Object reference not set to an instance of an object.
på:
lblBasic.Text = books.Rows[0]["price"].ToString();

Medlem sedan mars 20023 561 inlägg
#5

Det där är väl inte all kod, eftersom du inte har något som heter books i din kod. :q

Medlem sedan dec. 20003 887 inlägg
#6

Eller så ska books vara price?

Medlem sedan sep. 20011 914 inlägg
#7
XmlTextReader xdr = new XmlTextReader(HttpContext.Current.Server.MapPath("../shop/products.xml"))
string[] s = new string[4];
int i = 0;
while(xdr.Read()) {
   if(xdr.NodeType == XmlNodeType.Element){
      if(xdrData.Name == "price"){
         s[i] = xdrData.ReadString();
         i++;
      }
   }
}
xdr.Close();

lbBasic.Text = s[0];
lbSpeech.Text = s[1];
lbAdvanced.Text = s[2];
lbComprehensive.Text = s[3];
Medlem sedan jan. 20013 341 inlägg
#8

miss av mig, ändrade i koden innan jag postade, felmeddelandet är på raden:

lblBasic.Text = price.Rows[0]["price"].ToString();

Medlem sedan jan. 20013 341 inlägg
#9

Dino -> måste man verkligen loopa?

Medlem sedan sep. 20011 914 inlägg
#10

Om du vill gå igenom xml dokumetet så är det nog bra att loopa. Kanske kan avvända typ XPath, men tror det är mer resurskrävande. Sen skulle jag gissa på att XmlTextReader är XMLs motsvarighet till en vanlig DataReader. Och då borde ju det innebära att det är det snabbaste sättet att ta ut datan. Gissar vidare att XmlDataDocument invändigt använder sig av en XmlTextReader. Så varför kasta massa resurser på att bygga ett sådant och dess tillbehör.

Medlem sedan aug. 20039 340 inlägg
#11

Offtopic: Smurfen från Kungälv. :)

Medlem sedan sep. 20026 425 inlägg
#12

nitro2k01 skrev:

Offtopic: Smurfen från Kungälv. :)

Va??

Aleborg: ASP.NET Data Binding with XML @ W3schools kanske hjälper? :)

Medlem sedan apr. 20012 266 inlägg
#13

Om du vill presentera datan som HTML tror jag att xsl kan vara något att titta på. XSL "läser" in XML och spottar ut HTML.

Medlem sedan apr. 20012 266 inlägg
255 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)