0

シルバーライトの XML ファイルから国名とその都市を読み込もうとしています。

選択した国に応じて都市を ListPicker にロードしたい。

これは私の XML ファイルの一部です。

<Times>
    <country name="USA">
        <city name="Aaronsburg -- PA">
            <state>PA</state>
            <latitude>408739</latitude>
            <longitude>-773815</longitude>
            <timezone>-500</timezone>
            <daylight>1</daylight>
        </city>
        <city name="Abbeville -- AL">
            <state>AL</state>
            <latitude>316077</latitude>
            <longitude>-853051</longitude>
            <timezone>-600</timezone>
            <daylight>1</daylight>
        </city>
        <city name="Abbeville -- GA">
            <state>GA</state>
            <latitude>319710</latitude>
            <longitude>-833016</longitude>
            <timezone>-500</timezone>
            <daylight>1</daylight>
        </city>
        <city name="Abbot -- ME">
            <state>ME</state>
            <latitude>453219</latitude>
            <longitude>-695342</longitude>
            <timezone>-500</timezone>
            <daylight>1</daylight>
            </city>
........
........

そして、これは私が書いたコードです:

private void LoadButton_Click(object sender, RoutedEventArgs e)
{
    XDocument doc = XDocument.Load("Athan.xml");
    var definitions = doc.Document.Descendants(XName.Get("country"));

    foreach (var definition in definitions)
    {
        if (definition.Attribute(XName.Get("name")).Value == CountryListPicker.SelectedItem.ToString())
        {
            var cities = definition.Document.Descendants(XName.Get("city"));

            foreach (var city in cities)
            {
                CityListPicker.Items.Add(city.Attribute(XName.Get("name")).Value.ToString());
            }

            return;
        }
    }
}

都市が久しぶりにロードされるか、ロードされていません! 私のコードに何か問題がありますか?

4

2 に答える 2

0

追加してみてください

XDocument doc = XDocument.Load("Athan.xml");
XElement root = doc.Root;

foreach (XElement el in root.Descendants("Times"))
{
    // code to navigate in your XML

    if ( el.Name == "country"){
        foreach ( XAttribute attr in el.Attributes())
        {
            if ( attr.name == "name"){
                // receive your country name
                String CountryName = attr.Value;
            }
        }
        foreach (XElement city in el.Descendants())
        {
            if (city.Name == "city")
            {
                Object City = new Object(); // create your object...
                foreach ( XAttribute attr in el.Attributes())
                {
                    if ( attr.name == "state"){
                        City.sate = cityAttr.Value;
                    }
                    if ( attr.name == "latitude"){
                        City.latitude = cityAttr.Value;
                    }
                    // etc....
                }

          //You add your object city in list ( for example ) ...
    }
}

xmlをロードするのに問題があり、このメソッドを使用してxmlがロードされました...

このソリューションがお役に立てば幸いです...

于 2012-04-05T09:59:11.930 に答える