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

XmlTextReader problem

[es] :: .NET :: XmlTextReader problem

[ Pregleda: 1216 | Odgovora: 5 ]

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

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.
09.08.2004. u 07:36 

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
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!
09.08.2004. u 13:09 

bunker
Srđan Savković
Smederevo

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

ICQ: 30281997


Profil

icon Re: XmlTextReader problem12.08.2004. u 15:03

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...
bunker
12.08.2004. u 15:03 

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
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!
12.08.2004. u 17:48 

nikola.s

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



Profil

icon Re: XmlTextReader problem12.08.2004. u 20:06
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;
12.08.2004. u 20:06 

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
Hvala na odgovorima, snasao sam se:)
All beer is good. Some beer is better.
12.08.2004. u 20:16 

[es] :: .NET :: XmlTextReader problem

[ Pregleda: 1216 | Odgovora: 5 ]

Postavi temu Odgovori

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