在C#中为Windows Phone创建xml解析器的问题

时间:2013-03-21 20:23:45

标签: c# windows-phone-7 xml-parsing

我不是一名专业程序员,大部分都是自学成才。目前我的项目是为使用C#for Windows phone编写的应用程序创建XML解析器。 要了解这一点,我正在尝试在此处发布的演示:http://www.developer.nokia.com/Community/Wiki/Parse_Local_XML_file_in_Windows_Phone

一切都很好,直到我进入以下部分:

     private void btnparse_Click(object sender, RoutedEventArgs e) 
    {
             this._parser = XMLParser.Instance;        
             StreamResourceInfo strm = Application.GetResourceStream(new Uri("/LocalXmlParsing;component/States.xml",UriKind.Relative));
     //needs to be done only once
             StreamReader reader = new StreamReader(strm.Stream);
             string data = reader.ReadToEnd();
             _parser.DataToParse = data;
             _parser.ParseStateData();
             lstStates.ItemsSource = _parser.StateCollection; 
}

我收到错误:“错误2当前上下文中不存在名称'_parser'” 我会接受你们可以给我的任何建议。

2 个答案:

答案 0 :(得分:3)

this始终是对当前对象(其成员函数正在执行)的引用。因此this._parser称为"field"或“成员变量”。必须在类定义中定义这些字段。你没有向我们展示完整的类定义,但它肯定不存在。这就是编译器抱怨的内容。

看起来应该是这样的:

class Foo {
    private XMLParser _parser;

    // your functions, like btnparse_Click
}

或者,如果您只想在该功能的上下文中使用解析器,只需将其设为local variable

private void btnparse_Click(object sender, RoutedEventArgs e) 
{
    XMLParser parser = XMLParser.Instance;
    ...

您还可以使用implicitly typed local variable

private void btnparse_Click(object sender, RoutedEventArgs e) 
{
    var parser = XMLParser.Instance;
    ...

答案 1 :(得分:0)

检查_parser是否定义为类变量或者它是否是父类中的变量(如果您的类继承了基类)。我没有看过整个代码,但这就是错误所暗示的。