使用 C# 2.0 函数从 XML 获取属性值

Posted

技术标签:

【中文标题】使用 C# 2.0 函数从 XML 获取属性值【英文标题】:Getting attributes value from XML using a C# 2.0 function 【发布时间】:2012-05-23 08:48:17 【问题描述】:

我正在使用 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;
        

【讨论】:

以上是关于使用 C# 2.0 函数从 XML 获取属性值的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 变量中获取数据表属性的值

如何使用 c# 2.0 将 ArrayList 字符串值与 XDocument Title 属性匹配

如何从 XML/MPD 文件中获取属性值?

如何使用 XML::XPath 获取属性?

从 XML 获取数据 - XMLGet 函数使用属性名称及其在雪花中的值

在单独的线程中调用时,C# 2.0 函数不起作用