Einzelne Werte aus XML-String einlesen

16/06/2009 - 10:29 von Kai Wiechers | Report spam
Hallo,

ich möchte den Rückgabewert eines WebRequest als XML behandeln und einlesen.
Vom Server bekomme ich ungefàhr sowas:

<wert1>Das ist Wert 1</wert1><wert2>Das ist Wert 2</wert2><wert3>Das ist
Wert 3</wert3>

Das entspricht zwar noch nicht XML (soweit ich weiß...), aber wenn ich per
hand ein <xml></xml> drum setze kann ich den String zumindest mit folgendem
Code einlesen. Nur wie komme ich an die einzelnen Werte ran? Ich bekomme das
irgendwie nicht hin. Finde leider nichts im MSDN was mich weiter bringt :(

Mein Code:

Dim doc As New XmlDocument
Dim node As XmlNode
Dim xmltest As String = "<xml><wert1>Das ist Wert 1</wert1><wert2>Das ist
Wert 2</wert2><wert3>Das ist Wert 3</wert3></xml>"

Dim inhalt As String
doc.LoadXml(xmltest)
node = doc.SelectSingleNode("wert1")
'inhalt = doc.InnerText
inhalt = node.Value

MsgBox(inhalt)

Der Code funktioniert so nicht. Bekomme eine NullReferenceException. Ich
würde also sagen das ich mit doc.selectsinglenode("wert1") den knoten nicht
wàhle, aber wie mache ich es denn dann?
Wenn mir da jemand einen Tipp geben mag wàre ich sehr dankbar! Vieleicht bin
ich ja auch ganz auf dem Holzweg und es gibt eine ganz andere Möglichkeit an
die Werte zu kommen? Vielen Dank schonmal!
 

Lesen sie die antworten

#1 Martin Honnen
16/06/2009 - 14:07 | Warnen spam
Kai Wiechers wrote:

ich möchte den Rückgabewert eines WebRequest als XML behandeln und einlesen.
Vom Server bekomme ich ungefàhr sowas:

<wert1>Das ist Wert 1</wert1><wert2>Das ist Wert 2</wert2><wert3>Das ist
Wert 3</wert3>

Das entspricht zwar noch nicht XML (soweit ich weiß...),



Das ist kein XML-Dokument, aber ein Fragment. Mit .NET kann man das
einlesen:

Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim doc As New XPathDocument(XmlReader.Create(New
StringReader("<wert1>Das ist Wert 1</wert1><wert2>Das ist Wert
2</wert2><wert3>Das ist Wert 3</wert3>"), settings))
For Each el As XPathNavigator In doc.CreateNavigator().Select("*")
Console.WriteLine("{0}: {1}", el.Name, el.Value)
Next

Ausgabe ist dann

wert1: Das ist Wert 1
wert2: Das ist Wert 2
wert3: Das ist Wert 3


node = doc.SelectSingleNode("wert1")
'inhalt = doc.InnerText
inhalt = node.Value

MsgBox(inhalt)

Der Code funktioniert so nicht. Bekomme eine NullReferenceException. Ich
würde also sagen das ich mit doc.selectsinglenode("wert1") den knoten nicht
wàhle, aber wie mache ich es denn dann?



XPath lernen, wenn das 'wert1'-Element ein Kindelement des
'xml'-Elementes ist, dann braucht man den Pfad xml/wert1:

node = doc.SelectSingleNode("xml/wert1")
inhalt = node.InnerText

Martin Honnen MVP XML
http://msmvps.com/blogs/martin_honnen/

Ähnliche fragen