Ich serching für ein Element in einer XML-Datei folgende LINQ to XML-AbfrageProblem in Nicht-ASCII-Zeichensuche in XML-Datei mit Hilfe von XML Linq
XElement inspections = XElement.Load(new StreamReader(Server.MapPath(ResolveUrl(SelectInspection.InspectionFilePath)),Encoding.UTF8));
XElement inspection = (from elements in inspections.Elements("inspection")
where elements.Element("inspectionid").Value == inspectionId.ToString()
&& elements.Element("databasename").Value == Encoding.UTF8.GetString(Request.ContentEncoding.GetBytes (Request.QueryString("DbName")))
select elements).Single();
Und meine xml-Datei ist
<?xml version="1.0" encoding="utf-8"?>
<inspections>
<inspection>
<inspectionid>8</inspectionid>
<databasename>Åker</databasename>
<exported>false</exported>
</inspection>
</inspections>
Obwohl Request.QueryString("DbName")
gleich "Åker" ist, gibt die Abfrage kein Ergebnis zurück.
Vielen Dank für Ihre Antwort und den von Ihnen geposteten Code. Die Abfrage funktioniert für eine Zeichenfolge, aber nicht für eine Datei. Ich habe versucht, folgenden Code in der Konsole und ich bekomme den gleichen Fehler "Sequenz enthält kein Element": XElement Inspektionen = XElement.Load (neue StreamReader ("C: \\ Test \\ nonAscii.xml", Encoding.UTF8)) ; XElement Inspektion = (von Elementen in Inspektionen.Elemente ("Inspektion") \t \t \t \t \t \t \t \t \t wo \t \t \t \t \t \t \t \t \t elements.Element ("database"). Value == "Åker" \t \t \t \t \t \t \t \t \t Elemente auswählen) .Single(); – Ehsan
Sorry, der obige Code funktioniert korrekt. Ich habe die XML-Datei (nonAscii.xml) nicht in der utf-8-Codierung gespeichert. Ich denke, Anfrage ist das Problem. – Ehsan