Gå til innhold

SelectSingleNode vista 64


Anbefalte innlegg

hei

 

XPathNavigator docNav = doc.CreateNavigator();

MessageBox.Show("Test 2...");

XPathNavigator node = docNav.SelectSingleNode("/root/initinfo/Type");

MessageBox.Show("Test 3...");

value = node != null ? node.InnerXml.Trim(): null;

 

ovanstående fungerar i windows 7, windows xp, men ikke i vista 64x.

jag får upp test 2 men ikke test 3,

någon ide om varför detta vägrar fungera i win vista 64x

Lenke til kommentar
Videoannonse
Annonse
Det var en rar conditional setning du hadde der... men det er ikke så viktig.

Får du kanskje en exception? Hva står det i den?

 

får ingen ting, progrqammet bara hänger, får ingen feilmelling eller dylikt

 

note: detta fungerade inte i windows xp med msxml 6 parser men när jag även installerade msxml 4 parser i xp så fungerade det där, dock så skall juh den delen ligga i vista

Endret av Nyhetsfoto
Lenke til kommentar
Jeg vet ærlig talt ikke... men jeg ser at det har vært noen hotfixes for lignende problemer på Vista... er systemet helt oppdatert?

det jag sett av hotfixes gäller SP 1 men här är det SP 2

har även testat lägga in msxml 4 manuellt utan att lyckas, så vi står rätt o slätt still

verkar juh även som att msxml 6 ikke är helt bakåtkompatibel som man skulle tro

Endret av Nyhetsfoto
Lenke til kommentar
Funker det med alternative løsninger da?

Dersom det er noe rart med XPath uttrykket ditt (dog det ser helt gyldig ut) kan du prøve LINQ istedet.

 

vi bruker .NET 2.0 så tror ikke det stöttar LINQ viss man ikke gör ett "hack" på det men då blir det kanske problem vid distrubition

Lenke til kommentar
Funker det med alternative løsninger da?

Dersom det er noe rart med XPath uttrykket ditt (dog det ser helt gyldig ut) kan du prøve LINQ istedet.

 

vi bruker .NET 2.0 så tror ikke det stöttar LINQ viss man ikke gör ett "hack" på det men då blir det kanske problem vid distrubition

 

.NET 3 har vært ute i snart 4 år nå, og folk driver fremdeles og knoter med .NET 2.0

 

Jeg gir opp...

Lenke til kommentar

Det er ikke min jobb å velge utviklingsverktøy dere bruker, men jeg tør si at du kan spare endel på å flytte til 3.5.

Lambdauttrykk og LINQ = <3

Men det er off-topic.

Utover det, tror jeg at jeg bare ville funnet på en annen løsning (du må ikke bruke XPath f.eks. selv om det er latterlig mye enklere)

Lenke til kommentar
Det er ikke min jobb å velge utviklingsverktøy dere bruker, men jeg tør si at du kan spare endel på å flytte til 3.5.

Lambdauttrykk og LINQ = <3

Men det er off-topic.

Utover det, tror jeg at jeg bare ville funnet på en annen løsning (du må ikke bruke XPath f.eks. selv om det er latterlig mye enklere)

 

Støtter dette!

Dessuten, i XPath-uttrykket ditt bør du være klar over hva du faktisk selecter, og ikke minst om det returnerer null, eller kaster exceptions. En exception er nok.

Lenke til kommentar

Vel, mange IT avdelinger har som policy "Virker det, la det være". Ikke alle vil ha oppdateringer hele tiden. Husk at det finnes store ASP leverandører der ute som fortsatt kjører på win2000 og Win2003 servere. Selv har vi valgt å gå for .NET3.5 i våre distribusjoner nå, men det betyr at mange av våre kunder ikke kan oppgradere, nettop fordi deres ASP leverandør fortsatt kjører Windows 2000 server og der er ikke .NET3 en gang mulig å installere.

 

Så at du "gir opp" på grunn av at folk fortsatt "knoter" med .NET2 forteller meg bare at du ikke har dette som businness

Lenke til kommentar

Én ting som kan være verdt å notere seg, er at C# 3.0 fungerer i .NET 2.0, men LINQ og andre biblioteker er da ikke tilgjengelig.

Altså en kan bruke closures og lambdauttrykk (og yndlingen min: var) i .NET 2.0 med Visual Studio 2008 fordi det ikke er noen endringer i CLR 3.0 og 3.5. (bare i C# compileren)

Lenke til kommentar

detta är ett 10 år gammalt program som skall få en liten uppdatering.

så att byta ut till .NET 3 är ikke aktuellt =)

 

vi kör

 

VS 2008

c# .NET 2.0

DLL kallas opp från en C++ app

og vi har prövd med XmlDocument og Xpath

henger på denna koden

 

TEST 1:

 

ASCIIEncoding encoding = new ASCIIEncoding();

Stream stream = new MemoryStream(encoding.GetBytes(xml));

XPathDocument doc = new XPathDocument(stream);

 

XPathNavigator docNav = doc.CreateNavigator();

MessageBox.Show("Test 2...");

XPathNavigator node = docNav.SelectSingleNode("/root/initinfo/Type");

MessageBox.Show("Test 3...");

value = node != null ? node.InnerXml.Trim(): null;

 

TEST 2:

XmlDocument inputXML = new XmlDocument();

try {

if (xml.Trim() != "") {

inputXML.LoadXml(xml);

 

XmlNode node = inputXML.SelectSingleNode("/root/initinfo/Type");

if (node != null) {

value = node.InnerText.Trim();

}

}

}

catch (Exception e) {

MessageBox.Show("Klarte ikke å tolke xml informasjon.\n\nÅrsak:" + e.Message, "program", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

return 0;

}

 

varav det som är bold är där han stoppar.

Endret av Nyhetsfoto
Lenke til kommentar
Vel, mange IT avdelinger har som policy "Virker det, la det være". Ikke alle vil ha oppdateringer hele tiden. Husk at det finnes store ASP leverandører der ute som fortsatt kjører på win2000 og Win2003 servere. Selv har vi valgt å gå for .NET3.5 i våre distribusjoner nå, men det betyr at mange av våre kunder ikke kan oppgradere, nettop fordi deres ASP leverandør fortsatt kjører Windows 2000 server og der er ikke .NET3 en gang mulig å installere.

 

Så at du "gir opp" på grunn av at folk fortsatt "knoter" med .NET2 forteller meg bare at du ikke har dette som businness

 

Joda, jeg jobber nemlig med slike knotete forhold selv. Det hele koker ned til at ASP-leverandører er veldig føyelige når det blir snakk om at kundene deres bytter ASP-leverandør hvis de ikke oppgraderer til Server 2003. Hvis det er slik at dere lar dere diktere av frykten for kundens respekt for ASP-leverandørens uvitenhet om nyere systemer, har dere strengt tatt en utfordring.

 

Sist jeg sjekket, er det systemleverandørene som dikterer systemkravene, og ikke ASP-leverandørene som skal drifte løsningen. Kanskje verdt å ha dette i bakhodet?

Lenke til kommentar
detta är ett 10 år gammalt program som skall få en liten uppdatering.

så att byta ut till .NET 3 är ikke aktuellt =)

 

vi kör

 

VS 2008

c# .NET 2.0

DLL kallas opp från en C++ app

og vi har prövd med XmlDocument og Xpath

henger på denna koden

 

TEST 1:

 

ASCIIEncoding encoding = new ASCIIEncoding();

Stream stream = new MemoryStream(encoding.GetBytes(xml));

XPathDocument doc = new XPathDocument(stream);

 

XPathNavigator docNav = doc.CreateNavigator();

MessageBox.Show("Test 2...");

XPathNavigator node = docNav.SelectSingleNode("/root/initinfo/Type");

MessageBox.Show("Test 3...");

value = node != null ? node.InnerXml.Trim(): null;

 

TEST 2:

XmlDocument inputXML = new XmlDocument();

try {

if (xml.Trim() != "") {

inputXML.LoadXml(xml);

 

XmlNode node = inputXML.SelectSingleNode("/root/initinfo/Type");

if (node != null) {

value = node.InnerText.Trim();

}

}

}

catch (Exception e) {

MessageBox.Show("Klarte ikke å tolke xml informasjon.\n\nÅrsak:" + e.Message, "program", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

return 0;

}

 

varav det som är bold är där han stoppar.

 

Det er her jeg finner en stor fallgruve:

ASCIIEncoding encoding = new ASCIIEncoding();

 

Hold deg til Unicode.

Lenke til kommentar
detta är ett 10 år gammalt program som skall få en liten uppdatering.

så att byta ut till .NET 3 är ikke aktuellt =)

 

vi kör

 

VS 2008

c# .NET 2.0

DLL kallas opp från en C++ app

og vi har prövd med XmlDocument og Xpath

henger på denna koden

 

TEST 1:

 

ASCIIEncoding encoding = new ASCIIEncoding();

Stream stream = new MemoryStream(encoding.GetBytes(xml));

XPathDocument doc = new XPathDocument(stream);

 

XPathNavigator docNav = doc.CreateNavigator();

MessageBox.Show("Test 2...");

XPathNavigator node = docNav.SelectSingleNode("/root/initinfo/Type");

MessageBox.Show("Test 3...");

value = node != null ? node.InnerXml.Trim(): null;

 

TEST 2:

XmlDocument inputXML = new XmlDocument();

try {

if (xml.Trim() != "") {

inputXML.LoadXml(xml);

 

XmlNode node = inputXML.SelectSingleNode("/root/initinfo/Type");

if (node != null) {

value = node.InnerText.Trim();

}

}

}

catch (Exception e) {

MessageBox.Show("Klarte ikke å tolke xml informasjon.\n\nÅrsak:" + e.Message, "program", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

return 0;

}

 

varav det som är bold är där han stoppar.

 

Og jeg glemte dette:

 

SelectSingleNode() returnerer XmlNode

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...