Jag vill tolka information ned en XLMTextReader. Ja, det är väl inte så konstigt :) Det är ju XmlTextReader.Read Skillnaden är att det ligger en textnod innehållande radbryt+tab/space i den radbrutna varianten. Radbryt spelar roll. Read() läser alla slags noder som finns. XMLTextReader uppträder märkligt
Den kommer vi en socket och ser ibland ut så här:
<?xml version="1.0" encoding="utf-8"?><Commands><LPRequest LPID="1" Status="On" /></Commands>
dvs en följd utan radbrytning eller indentering
ibland kommer den så här
<?xml version="1.0" encoding="utf-8"?>
<Commands>
<LPRequest LPID="1" Status="On" />
</Commands>
Jag har inte kontroll över skickandet (inte mina produkter).
För att läsa mig frm till LPRequest
xr.ReadToFollowing("Commands")
xr.Read()
men i ena fallet (radbruten text) krävs ytterligare en xr.Read för att komma rätt.
Någon som har en förklaring ?Sv: XMLTextReader uppträder märkligt
Du läser ju här på bytenivå och fram till en speciell text.
I något annat fall kanske du hade velat få reda på om det fanns radbryt efter, alltså funkar metoden på detta sätt. Det är ett bättre sätt att göra Read() i en loop och titta på reader.NodeType och elementets namn.
exempel: http://support.microsoft.com/kb/301228
Eller använd i stället XmlDocument och xpath-uttryck så slipper du alla sådana problem. Om meddelandena är små som dessa kostar det inte så mkt att ladda det som XmlDocument.Sv:XMLTextReader uppträder märkligt
Jag tolkade det så att den läser nästa nod från streamen, det är ju inte en vanlig stream read som görs.
Då borde inte radbryt spela någon roll.
Eller har jag missat nåt?
Vill gärna ha så snabbt som möjligt (rimligt) då det är en applikation för processtyrning, därför undvek jag xpath-uttryck.Sv: XMLTextReader uppträder märkligt
Sv: XMLTextReader uppträder märkligt
Whitespace och kommentarer är också noder.
Därför gör man t.ex. select case på NodeType.
Eller använd ReadElementString()