Avatar billede inctor Nybegynder
24. juni 2009 - 22:42 Der er 8 kommentarer og
1 løsning

Søg efter element i XML fil?

Hej Alle..

For ikke så længe siden startede jeg på C# da jeg fandt det nyttigt til at lave en simpel database uden at skulle opdatere mysql osv fra en XML fil.

Min XML fils opbygning ser ud som således:
<product>
    <katalognr>407659</katalognr>
    <varenr>8001</varenr>
    <varetekst>Afstandsring 407659 KR 10mm</varetekst>
    <udvaretekst>Afstandsring 10mm Blank krom</udvaretekst>
    <pris>50</pris>
    <ean>5708538149936</ean>
    <tun>1328160</tun>
    <produkthgtuppe>Mekaniske låse</produkthgtuppe>
    <produktugruppe>Tilbehør</produktugruppe>
    <altvn>RR407659</altvn>
    <varekode>1</varekode>
</product>

Og dem er der ca 23.000 af i en lang række nedad med forskellige værdier men samme opsætning ..

Mit spørgsmål er nu, kan jeg lave en form for søgefunktion der søger efter EAN og hvis den finder EAN nummeret skal den hive de andre værdier ud i den <Product></product>-node og ligge dem ind i nogen textboxe?

Forstår i spørgsmålet? ellers må jeg lige prøve at formulere mit spørgsmål bedre hvis ikke det er..

Tak på forhånd.
Avatar billede rrm Nybegynder
24. juni 2009 - 22:54 #1
Det er muligt at hente specifikke elementer fra xml filer. Det foregår via XPATH syntax.

Kan ikke huske syntaksen, men på google findes der en række tutorials til dette...
Avatar billede inctor Nybegynder
24. juni 2009 - 22:54 #2
Har prøvet at google det, men syntes ikke rigtig der var noget som jeg forstod eller kunne bruge..
Derfor jeg spørger til råds herinde om hvordan man kan gøre det..
Avatar billede arne_v Ekspert
24. juni 2009 - 23:00 #3
noget a la:

XmlDocument doc = new XmlDocument();
doc.Load(xmlfile);
XmlElement elm = doc.SelectSingleNode("//products/product[ean='" + ean + "']");
tb1.Text = elm.SelectSingleNode("katalognr/text()").Value;
tb2.Text = elm.SelectSingleNode("varenr/text()").Value;
Avatar billede inctor Nybegynder
24. juni 2009 - 23:04 #4
Arne, den giver mig denne fejl:

Error    1    Cannot implicitly convert type 'System.Xml.XmlNode' to 'System.Xml.XmlElement'. An explicit conversion exists (are you missing a cast?)

Sorry hvis det er en lille fejl jeg poster, men er lige begyndt på det. :)
Avatar billede inctor Nybegynder
24. juni 2009 - 23:07 #5
Rettede det til XmlNode istedet for XmlElement .. og så virkede det :)

Jeg takker for hjælpen Arne ..
Tror jeg har forstået syntaxen til at rive de andre værdier ud også :)
Avatar billede rrm Nybegynder
24. juni 2009 - 23:07 #6
Det er lidt længe siden jeg har rodet med det... Men prøv at udskifte:

XmlElement elm = doc.SelectSingleNode("//products/product[ean='" + ean + "']");

med

XmlNode elm = doc.SelectSingleNode("//products/product[ean='" + ean + "']");
Avatar billede inctor Nybegynder
24. juni 2009 - 23:07 #7
Hvis du smider et svar Arne, så får du dine point.
Avatar billede inctor Nybegynder
24. juni 2009 - 23:08 #8
rrm -> Var liiiige lidt hurtigere end dig .. sådan ca 8 sekunder :)

Men ja det var sådan det skulle rettes til ;)
Avatar billede arne_v Ekspert
24. juni 2009 - 23:14 #9
Alternativt kunne man caste til XmlElement.

Og et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester