Получение значения атрибутов из XML с помощью функции C# 2.0

Я использую C# 2.0, и у меня есть формат ниже XML (это просто образец) и загружен в XPathDocument xmlData;

<?xml version="1.0"?>
<sitedata>
<resources>
<WorldwideSites>Worldwide sites</WorldwideSites>
<PublishedDate>20120507163835</PublishedDate>
</resources>
<region code="global" title="Global">
<site defaultLanguage="en" id="tcm:0-233-1" url="/english" countryCode="" title="" order="1">
<language code="en" pubId="tcm:0-233-1" countrylang="en-GB">English</language>
</site>
</region>
<region code="NSAM" title="North &amp; South America">
<site defaultLanguage="es" id="tcm:0-520-1" url="/ar/spanish" countryCode="AR" title="Argentina">
<language code="es" pubId="tcm:0-520-1" countrylang="es-AR" >Español</language>
<language code="en" pubId="tcm:0-447-1" countrylang="en-AR" >English</language>
</site>
</region>
<region code="EU" title="Europe">
<site defaultLanguage="de" id="tcm:0-336-1" url="/at/german" countryCode="AT" title="Austria">
<language code="de" pubId="tcm:0-336-1" countrylang="de-AT" >Deutsch</language>
<language code="en" pubId="tcm:0-337-1" countrylang="en-AT" >English</language>
</site>
</region>
</sitedata>

Теперь я хочу создать функцию C# 2.0, которая будет принимать этот XML в качестве ввода и возвращать многомерный массив или массив

ArrayList xmldata = new ArrayList();
xmldata[0][0] will be ["233"]["en-GB"] //a middle part of pubId attribute
xmldata[1][1] will be ["520"]["es-AR"] //attribute value of countrylang
..
..
and so on

Или предложить лучший подход

Пожалуйста, предложите!

Благодарю.

1 ответ

Решение

Реализовано ниже решение для вышеуказанной проблемы. Пожалуйста, предложите для любых изменений.

 public ArrayList GetPubIDAndCountryLangFromSitesXML(XPathDocument xPathDoc)
        {
            ArrayList retArr = new ArrayList();

            XPathNavigator navigator = xPathDoc.CreateNavigator();
            if (navigator != null)
            {
                foreach (XPathNavigator navdata in navigator.Select("sitedata/region/site/language"))
                {
                    string[] str = new string[2];
                    string pubid = navdata.SelectSingleNode("@pubId").Value;
                    string clang = navdata.SelectSingleNode("@countrylang").Value;
                    if (!string.IsNullOrEmpty(pubid) && !string.IsNullOrEmpty(clang))
                    {
                        str[0] = pubid.Split('-')[1];
                        str[1] = clang;
                        if (pubid != "481")
                        {
                            retArr.Add(str);
                        }
                    }
                }
            }
            return retArr;
        }
Другие вопросы по тегам