Question

I am using C# 2.0 and I have below xml format (it is just a sample) and got loaded in 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>

Now I want to create a C# 2.0 function which will take this XML as input and will return back a multidimensional array or arraylist

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

Or suggest the best approach

Please suggest!!

Thanks.

Was it helpful?

Solution

Implemented below solution for above problem. Please suggest for any changes.

 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;
        }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top