XML teilweise auslesen
-
Donnerstag, 16. Februar 2012 22:32
Hallo, ich möchte aus einem XML String mir einige Daten auslesen und diese in Steuerelemente als Text setzen.
public partial class MainPage : PhoneApplicationPage { StringBuilder output = new StringBuilder(); string xmlstring = @"<QuestionDB> <Question ID='1'> <Question>Welchen Tag haben wir heute?</Question> <answer>Montag</answer> <answer>Dienstag</answer> </Question> </QuestionDB>"; // Konstruktor public MainPage() { InitializeComponent(); testc(); } private void testc() { XDocument doc = XDocument.Parse(xmlstring); var query = from c in doc.Descendants("Question") where c.Element("ID").Value == "1" select new Question { // [...] }; }
Bekomme bei "select new Question", Typ oder Namespacename Question konnte nicht gefunden werden. Kann mir wer helfen?
Alle Antworten
-
Freitag, 17. Februar 2012 18:54
Du hast zweimal den Question- und answer-Tag drin. Schreibe dein XML so, dann sollte es funktionieren:
<QuestionDB> <Questions> <ID>1</ID> <Question>Welchen Tag haben wir heute?</Question> <Answers> <answer>Montag</answer> <answer>Dienstag</answer> </Answers> </Questions> </QuestionDB> -
Freitag, 17. Februar 2012 19:36
Hallo, danke für deine Antwort.
Jedoch immernoch das selbe Problem:
Fehler 1 Der Typ- oder Namespacename "Question" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
Der wird hier angezeigt "select new Question"
Kann ich im tag auch sowas mit angegeben <anwer correct>Montag</answer> ? Ich möchte eine Art Quiz erstellen und falsche Lösungen dadurch vorschlagen und natürlich die korrekte.
-
Samstag, 18. Februar 2012 08:59Moderator
Hi,
hast du auch eine Klasse Question definiert?
Zu deinem Tag: Du kannst etwas, wie <answer result=false>Montag</answer> machen.
Gruß, Peter
This posting is provided "AS IS" with no warranties, and confers no rights.
-
Samstag, 18. Februar 2012 09:49
Nein, aber wir kommen den jetzt näher :)
XDocument doc = XDocument.Parse(xmlstring);
string xmlstring = @" <Questions> <row> <ID>1</ID> <Question>Welchen Tag haben wir heute?</Question> <Answers> <answer>Montag</answer> <answer>Dienstag</answer> <answer>Bla</answer> <answer>Bummm</answer> </Answers> </row> <row> <ID>2</ID> <Question>Zweiter Tag</Question> <Answers> <answer>Montag</answer> <answer>Dienstag</answer> <answer>Bla</answer> <answer>Bummm</answer> </Answers> </row> </Questions> ";
var query = from c in doc.Descendants("row")
where c.Element("ID").Value == "2"
select c;query.Single();
Somit erhalte ich in query.Single() Alle Elemente die in ID 2 zu finden waren. Die Frage stellt sich nun, wie kann ich das nun auswerten? Sprich ich möchte in Variable string x den Wert aus Question.
-
Montag, 5. März 2012 17:53Besitzer
Somit erhalte ich in query.Single() Alle Elemente die in ID 2 zu finden waren. Die Frage stellt sich nun, wie kann ich das nun auswerten? Sprich ich möchte in Variable string x den Wert aus Question.
Hallo as_1985,
Schau Dir mal folgenden Code an. Vielleicht kann er Dir weiterhelfen.
Im folgenden Code bekommst Du in string x den Wert „Zweiter Tag“ (aus Question) der für ID=2 zuständig ist.
[TestXML.xml]
<Questions> <row> <ID>1</ID> <Question>Welchen Tag haben wir heute?</Question> <Answers> <answer>Montag</answer> <answer>Dienstag</answer> <answer>Bla</answer> <answer>Bummm</answer> </Answers> </row> <row> <ID>2</ID> <Question>Zweiter Tag</Question> <Answers> <answer>Montag</answer> <answer>Dienstag</answer> <answer>Bla</answer> <answer>Bummm</answer> </Answers> </row> </Questions>
[C#]
public class Author { public string userID { get; set; } public string userName { get; set; } } private void button2_Click(object sender, EventArgs e) { string FullPath = @"C:\Temp\TestXML.xml"; XDocument _charSheet = XDocument.Load(FullPath); var _charInfo = from item in _charSheet.Root.Descendants("row") select new Author { userID = item.Element("ID").Value, userName = item.Element("Question").Value }; string IDtoFind = "2"; List<Author> Authors = _charInfo.ToList(); // Find author by its ID. Author result = Authors.Find(delegate(Author bk) { return bk.userID == IDtoFind; }); if (result != null) { string x = result.userName; //MessageBox.Show(x); } else { //Console.WriteLine("\nNot found: {0}", IDtoFind); }
Grüße,
Robert
Robert Breitenhofer, MICROSOFT

Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.- Als Antwort markiert as_1985 Montag, 5. März 2012 21:50

