webForumDet fria alternativet

XmlTextReader & XmlTextWriter

5 svar · 229 visningar · startad av peterbladh

peterbladhMedlem sedan juni 2000277 inlägg
#1

Hej

Jag försöker först skriva lite xml med XmlTextWriter och sedan läsa den med XmlTextReader. En väg att gå är att skriva till en fil, stänga writern och sedan öppna filen med readern (vilket går fint). En annan variant är att skriva till en Stream (har bla testat MemoryStream), men detta får jag inte att fungera. Strömmen verkar vara tom när jag försköker läsa den.
Har någon erfarenhet av detta?

En annan fråga är oxå hur man snabbt kan få hela innehållet i XmlTextReader eller XmlDocument till en sträng.

Tack på förahand!

renholmMedlem sedan apr. 20012 266 inlägg
#2

hej, skulle man kunna få se lite kod. Och i vilket syfte vill du göra om hela XML dokumentet till en sträng?

peterbladhMedlem sedan juni 2000277 inlägg
#3

Syftet är att skicka det över en socket.
Man kanske kan använda en NetworkStream?
(återkommer med kod)

peterbladhMedlem sedan juni 2000277 inlägg
#4

Här kommer lite kod:

Stream stream = new MemoryStream();

		XmlTextWriter xtw = new XmlTextWriter(stream, Encoding.UTF8);
		xtw.Formatting = Formatting.Indented;
		xtw.Indentation = 4;
		xtw.WriteStartDocument();
		xtw.WriteStartElement("root");
		xtw.WriteStartElement("Command");
		xtw.WriteString("Connect");
		xtw.WriteEndElement();
		xtw.WriteEndElement();
		xtw.WriteEndDocument();
				
		XmlTextReader xtr = new XmlTextReader(stream);
		try
		{
			if (!xtr.EOF)
				while(xtr.Read())
					DebugWL(xtr.Name);
		}
		catch(Exception E)
		{
			DebugWL(E.Message);
		}

		xtw.Close(); xtr.Close();

... det blir fel på raden: while(xtr.Read())
felet är: root element is missing
och kollar jag längden på strömmen så är den 0 (noll)

peterbladhMedlem sedan juni 2000277 inlägg
#5

Hittade felet!

xtw.Flush();
stream.Position = 0;

måste komma innan XmlTextReader initieringen!

renholmMedlem sedan apr. 20012 266 inlägg
#6

ok, bra att du redovisar felet, i förebyggande syfte för andra.

127 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)