XML - získání hodnoty z XML souboru   zodpovězená otázka

VB.NET, XML

Ahoj všichni,

učím se XML, ale nějak mi to moc nejde, spíš vůbec ne.

Potřeboval bych prosím poradit jak vytáhnout z xml souboru číslo 100

<?xml version="1.0" encoding="UTF-8"?>
<Testxml>
  <Druhynode>
    <Dostattext> 100 </Dostattext>
  </Druhynode>
</Testxml>

Koukal jsem na článek, ale jsem z toho jelen.

http://www.dotnetportal.cz/clanek/80/Pra...

Můj testovací kód je:

Imports System.Xml

Dim doc As New XmlDocument()
  Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'načíst XML soubor
     doc.Load("15AL0045.xml")
     TextBox1.Text = doc.SelectSingleNode("Testxml/Druhynode[Dostattext]").InnerText
  End Sub

Co dělám špatně ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak už jsem na to přišel.

textBoxJmeno.Text = doc.SelectSingleNode("Testxml/Druhynode/Dostattext").InnerText
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Místo DOM/XPath Vám vřele doporučuji naučit se radši XLINQ (LINQ to XML):

https://msdn.microsoft.com/en-us/library...

https://msdn.microsoft.com/en-us/library...

https://msdn.microsoft.com/en-us/library...

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Děkuji za info, ale prvně se musím pořádně naučit jak číst a ukládat XML abych mohl začít s XLINQ.

Asi je to podobné, ale zdá se mi to na začátek docela složité.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Tak chce to vědět jak vypadá takový XML dokument, ale rozhodně se nemusíte nejdříve patlat s XPathem, jestli nechcete. Možná to vyžaduje lepší znalost .NETu.

Nicméně:

// načte xml
var xml = XElement.Load("soubor.xml");
// teď máte v proměnné xml element <Testxml>, protože je nejvýš v hierarchii

// k jeho potomkům se dostanu pomocí metody Element:
var druhynode = xml.Element("Druhynode");
// teď je v proměnné druhynode podelement <Testxml> se jménem "Druhynode"

var dostatText = druhynode.Element("Dostattext");
// zase si vezmu podelement

// a jeho obsah dostanu pomocí property Value
var text = dostatText.Value;

// dá se to samozřejmě napsat celé na jeden řádek:
text = xml.Element("Druhynode").Element("Dostattext").Value

není to zas tak složité, ne?

hlavní výhoda tohoto oproti XPAthu, je že se to mnohem lépe debuguje. Jenom tam dáte breakpoint, pak to odkrokujete a hned vidíte ve kterém kroku to dělá blbosti.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Tato verze se mi líbí. Děkuji. Vyzkouším

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback