使用 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 & 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# 2.0 将 ArrayList 字符串值与 XDocument Title 属性匹配