Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

XmlTextReader problem

[es] :: .NET :: XmlTextReader problem

[ Pregleda: 2819 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Simke
Marko Simic
Sandfield Associates (Solution
Developer)
Novi Zeland

Član broj: 1158
Poruke: 751
*.dialup.xtra.co.nz

ICQ: 71578686
Sajt: www.sandfield.co.nz


Profil

icon XmlTextReader problem09.08.2004. u 07:36 - pre 212 meseci
Nisam do sada koristio XML fajlove u .Net, ali mi je zatrebalo, pa sam malo uzeo da se igram. Dakle problem je sledeci:
Napravim XML fajl sledecim kodom:

Code:

myXmlTextWriter = New XmlTextWriter(Application.StartupPath & "\test.xml", Nothing)
myXmlTextWriter.Formatting = System.Xml.Formatting.Indented
myXmlTextWriter.WriteStartDocument(True)
myXmlTextWriter.WriteStartElement("Settings")
myXmlTextWriter.WriteStartElement("Database", Nothing)
myXmlTextWriter.WriteElementString("Path", "c:\Test.mdb")
myXmlTextWriter.WriteEndElement()
myXmlTextWriter.WriteEndElement()
myXmlTextWriter.Flush()
myXmlTextWriter.Close()


Fajl izgleda ovako:

Code:

<?xml version="1.0" standalone="yes"?>
<Settings>
  <Database>
    <Path>c:\Test.mdb</Path>
  </Database>
</Settings>


Sad krenem da procitam XML fajl sledecim kodom:

Code:

reader = New XmlTextReader(Application.StartupPath & "\test.xml")
        Do While reader.Read()
            Select Case reader.NodeType
                Case XmlNodeType.Element
                    If reader.Name = "Path" Then
                        Me.txtDBPath.Text = reader.Value
                    End If
            End Select
        Loop


E problem je sto reader.Value vraca prazan string ("").
Kako da procitam vrednost elementa?
All beer is good. Some beer is better.
 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
212.62.55.*



Profil

icon Re: XmlTextReader problem09.08.2004. u 13:09 - pre 212 meseci
Vrednost reader.Value ne moze da ti vrati vrednost koju ti ocekujes zato sto za tip XmlNodeType.Element uvek vraca String.Empty (treba malo citati i MSDN...). Parsiraj tako da tekuci cvor proveravas sa XmlNodeType.Text, posto se vrednost koju ti ocekujes nalazi u ChildNode-u elementa "Path" koji je tipa XmlNodeType.Text, ili procitaj sa reader.ReadString().
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
 
Odgovor na temu

bunker
Srđan Savković
Smederevo

Član broj: 4495
Poruke: 239
*.beocity.net



Profil

icon Re: XmlTextReader problem12.08.2004. u 15:03 - pre 212 meseci

ja preporucujem to ovako:

Code:
<?xml version="1.0" standalone="yes"?>
<Settings>
  <Database>
    <Path value="c:\Test.mdb"/>
  </Database>
</Settings>


da bi radio prthodni nacin potrebna ti je dtd ili xsd specifikacija, bez obzira da li je standalone ili ne. kada pozoves metog GetTAttribute(attName) klase XmlElement dobicces vrednost atributa attName.
drugi nacin je da citas element path sa svojstvom InnerXml klase XmlElement, ili tako nesto.
mislim da InnerXml bas i nije po specifikaciji dom-a, ali ms voli to...
Nije važno stići prvi. Važno je prvo da stigneš.
 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
212.62.55.*



Profil

icon Re: XmlTextReader problem12.08.2004. u 17:48 - pre 212 meseci
Citat:
bunker:
da bi radio prethodni nacin potrebna ti je dtd ili xsd specifikacija, bez obzira da li je standalone ili ne...

Sa ovim bas i ne mogu da se slozim, posto covek parsira xml i tu mu uopste nisu (preko) potrebni ni DTD ni XML Schema, slazem se da je pozeljno imati pred sobom neki oblik seme da bi znao kako i sta da parsiras, ali opet, nije neophodno. OK ako prethodno hoces da izvrsis validaciju dokumenta.
Citat:
bunker:
...kada pozoves metog GetTAttribute(attName) klase XmlElement dobicces vrednost atributa attName.

XmlElement se koristi za DOM parsiranje, dok je ovde covek koristio SAX, koliko se ja razumem u "domacu kuhinju"
Citat:
bunker:
drugi nacin je da citas element path sa svojstvom InnerXml klase XmlElement, ili tako nesto. mislim da InnerXml bas i nije po specifikaciji dom-a, ali ms voli to...

Ovo je tacno, a i Microsoft sam kaze:
Citat:
by MSDN:

XmlElement.InnerXml Property
...
"This property is a Microsoft extension to the Document Object Model (DOM)."
...

If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
 
Odgovor na temu

nikola.s

Član broj: 4434
Poruke: 16
*.94.EUnet.yu



Profil

icon Re: XmlTextReader problem12.08.2004. u 20:06 - pre 212 meseci
U sledecem rdr.Read() dobijas vrednost.

case XmlNodeType.Element:
if ( rdr.Name == "Path")
{
rdr.Read();
if (rdr.NodeType == XmlNodeType.Text)
{
string test = rdr.Value;
}
}
break;
 
Odgovor na temu

Simke
Marko Simic
Sandfield Associates (Solution
Developer)
Novi Zeland

Član broj: 1158
Poruke: 751
*.dialup.xtra.co.nz

ICQ: 71578686
Sajt: www.sandfield.co.nz


Profil

icon Re: XmlTextReader problem12.08.2004. u 20:16 - pre 212 meseci
Hvala na odgovorima, snasao sam se:)
All beer is good. Some beer is better.
 
Odgovor na temu

[es] :: .NET :: XmlTextReader problem

[ Pregleda: 2819 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.