Slettet bruger
31. januar 2008 - 17:05
Der er
43 kommentarer og 1 løsning
XML med C#: Hvordan?
Hej eksperter, Hvordan bruges XML nemmest i C#? Er der en indbygget parser? Kan I linke til en god tutorial? Tak!
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
31. januar 2008 - 17:08
#1
XmlDocument er en fin klasse til at arbejde med XML in memory hvis ikke det er kæmpe xml filer.. ellers er der også XmlReader..Writer..
XmlDocument er helt fin og du kan navigerer i din xml med Xpath..
http://www.w3schools.com/xpath/ resten må du få svar på af google:)
31. januar 2008 - 17:12
#3
31. januar 2008 - 17:17
#4
For sent.
Slettet bruger
31. januar 2008 - 18:15
#5
Haha! Tja, jeg tror, jeg kikker lidt på din artikel, arne... Du plejer at være riiimelig inde i sagerne :P
Slettet bruger
31. januar 2008 - 20:54
#6
Hov! Jeg sendte lige en kommentar, der blev slettet... Mystisk. Nå, her kommer den igen: Der er lige noget, jeg ikke fårstår, når jeg loader en xml-fil. Jeg har oprettet en fil i mit Visual C# 2008-projekt og forsøget at loade fra samme, men det virker ikke (kan ikke finde filen)?
31. januar 2008 - 21:21
#7
Mit gaet: filen ligger i et andet dir end der hvor dit program leder efter den. Proev med fuld sti til filen.
Slettet bruger
31. januar 2008 - 21:23
#8
Hmm... Så skal jeg selv lave filen :/ Pyt, da, gør jeg så.
Slettet bruger
31. januar 2008 - 22:59
#9
Er det muligt at gennemsøge en xml-fil for en bestemt værdi? Altså eksempelvis 'abc' i: <test> <noget> abc </noget> <nogetandet> Duh </nogetandet> </test> Kan man så på en måde finde frem til tagget 'noget'?
31. januar 2008 - 23:04
#10
Den maa du kunne finde med XPath !
01. februar 2008 - 01:44
#11
doc.SelectSingleNode("//test/*[contains(text(),'abc')]").Name vil returnere "abc"
Slettet bruger
01. februar 2008 - 08:20
#12
Men arne, jeg skal jo bruge taggets navn. Hvad er forresten XPath?
Slettet bruger
01. februar 2008 - 08:58
#13
Hmm, fandt ud af, hvad det er. Men: Hvorfor virker følgende ikke: C:\TEST\Eirene.xml <?xml version="1.0" encoding="utf-8" ?> <root> <dir>C:\Programmer\Noget</dir> <server> <title>Test 1</title> <v1>Test 1a</v2> <v2>Test 1b</v2> </server> <server> <title>Test 2</title> <v1>Test 2a</v2> <v2>Test 2b</v2> </server> <server> <title>Test 3</title> <v1>Test 3a</v2> <v2>Test 3b</v2> </server> </root> //----- static class Data { public static String Source = "C:\\TEST\\Eirene.xml"; public static XmlDocument XML = new XmlDocument(); public static String Directory; public static XmlDocument Load() { XML.Load(Source); Directory = XML.ChildNodes[1].SelectNodes("dir")[0].Value; return XML; } public static XmlDocument Save() { XML.Save(Source); return XML; } } //----- Data.Load().Directory bliver null!
Slettet bruger
01. februar 2008 - 08:59
#14
...hvorfor? Den burde vel blive 'C:\Programmer\Noget'? Det er i hvert fald hensigten.
01. februar 2008 - 15:21
#15
Min SelectSingleNode returnerer ogsaa taggets navn.
01. februar 2008 - 15:23
#16
Og jeg forstaar ikke din kode. SelectNodes finde noder i XML dokumentet - det har intet med dokumentets placering i fil systemet at goere ?
Slettet bruger
01. februar 2008 - 16:33
#17
> Min SelectSingleNode returnerer ogsaa taggets navn. Nej, du skrev da, at den returnerede "abc" (som er værdien)? > SelectNodes finde noder i XML dokumentet - det har intet med dokumentets placering i filsystemet at goere ? Jeg bruger den heller ikke til at lede i filsystemet... Jeg vælger en fil i starten af koden.
Slettet bruger
01. februar 2008 - 16:34
#18
public static String Source = "C:\\TEST\\Eirene.xml"; og XML.Load(Source); er de eneste linier, der har relevant for filsystemet, og de virker.
01. februar 2008 - 16:46
#19
Jeg skrev forkert. doc.SelectSingleNode("//test/*[contains(text(),'abc')]").Name returnerer "noget" ikke "abc".
01. februar 2008 - 16:49
#20
Jeg er stadig noget forvirret over hvad det er du vil med det dir. Men et gaet ville vaere at: Directory = XML.ChildNodes[1].SelectNodes("dir")[0].Value; skal vaere: Directory = XML.SelectSingleNode("//root/dir").Value;
Slettet bruger
01. februar 2008 - 18:09
#21
Nååå, du bliver forvirret over, at jeg leder efter 'dir' i xml-filen :) Undskyld, det var et eksempel. Jeg skal nemlig bruge det til et program, der skal lede efter en dir i en xml-fil og derefter læse fra den relevante dir. Jeg læser lige din kommentar igennem igen...
Slettet bruger
02. februar 2008 - 23:12
#22
Hvad betyder // før root? At det er begyndelsen af en sti?
Slettet bruger
02. februar 2008 - 23:13
#23
(Directory = XML.SelectSingleNode("//root/dir").Value;)
02. februar 2008 - 23:32
#24
Ja.
Slettet bruger
03. februar 2008 - 02:01
#25
HVAD?! Jeg har for over to timer siden poster to kommentarer, der nu er forsvundet. Hvad fanden sker der med Eksperten?!
03. februar 2008 - 05:23
#26
Du bliver nok nødt til at poste dem igen.
Slettet bruger
03. februar 2008 - 10:16
#27
Ja... Kan bare ikke huske, hvad mit eksempel var. Lige et sekund.
Slettet bruger
03. februar 2008 - 10:22
#28
<?xml en_masse_info_om_xml ?> <root> <example>Det virker vist nu. Græt!</example> </root> 'XmlDocument.SelectSingleNode("root/example").Value' giver her 'null'. Hvorfor?
03. februar 2008 - 15:30
#29
Prøv: ditdoc.SelectSingleNode("//root/example").Value
Slettet bruger
03. februar 2008 - 19:55
#30
Har lige prøvet -- resultatet er stadig: "Cannot set a value on node type 'Element'."
03. februar 2008 - 19:57
#31
ditdoc.SelectSingleNode("//root/example").FirstChild.Value = "bla bla"; måske. Ellers prøv og post noget kode.
Slettet bruger
04. februar 2008 - 08:40
#32
Ok.
Slettet bruger
04. februar 2008 - 09:17
#33
ditdoc.SelectSingleNode("//root/example").FirstChild.Value = "bla bla"; virker. Logisk... Elleeer?
04. februar 2008 - 14:00
#34
.SelectSingleNode("//root/example") giver dig <example> for at få fat i text noden inden i kan man bruge FirstChild muligvis virker ditdoc.SelectSingleNode("//root/example/text()").Value = "bla bla"; også.
Slettet bruger
04. februar 2008 - 14:18
#35
Hm. Det er selvfølgelig logisk - specielt hvis man kan gøre som følger: <noget> Hellooo! <nogetandet>Hello, </nogetandet> <nogettredje>World!</nogettredje> </noget> Kan man det?
04. februar 2008 - 14:50
#36
Det kan man. Men det anses ikke som værende "pænt".
Slettet bruger
04. februar 2008 - 15:21
#37
Forståeligt og... Forståeligt ;P Hvad med brug af atributter? <noget nogetandet="h4x0r"> <nogettredje>zomg</nogettredje> </noget> Til hvad bruger man det, hvis det skal være "pænt"? Jeg ville umiddelbart sige, at man kun skulle bruge den som erstatning af <noget> Hellooo! <nogetandet>Hello, </nogetandet> <nogettredje>World!</nogettredje> </noget> , der jeg ikke er pænt :)
Slettet bruger
04. februar 2008 - 15:21
#38
*der JO ikke
Slettet bruger
04. februar 2008 - 15:22
#39
Altså: <noget nogetandet="h4x0r"> <nogettredje>zomg</nogettredje> </noget> I stedet for: <noget> h4x0r <nogettredje>zomg</nogettredje> </noget> Er det nogenlunde sådan?
Slettet bruger
04. februar 2008 - 15:23
#40
Et skud i tågen... Kan komme på mange andre ting, man også kan gøre enklere med attributes.
04. februar 2008 - 16:10
#41
f.eks.
Slettet bruger
04. februar 2008 - 17:10
#42
Ok. Så må det vist også være på tide, at du får nogle points! Gief svar!
04. februar 2008 - 20:45
#43
svar
Slettet bruger
04. februar 2008 - 20:52
#44
points
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.