C# 无法从对象列表中获取值
C# cannot get values from list of objects
我的主程序 class 调用 StronyElementuStrukt
过程
List<object> monthlyPages = new List<object>();
monthlyPages = StronyElementuStrukt(loginGuid, "8B35134E10A8432DB1A8C06A58427988");
这是程序 - 一种构建 xml 节点列表并将其 returns 到主程序的方法 class:
public static List<object> StronyElementuStrukt(string LoginGUID, string LinkGUID)
{
List<object> listPages = new List<object>();
XmlDocument document = new XmlDocument(); // tworzenie nowego obiektu - dokument xml z odpowiedzia serwera
document.LoadXml(response.Result); //wczytywanie xmla z odpowiedzia serwera do obiektu
XmlNode pageNode = document.SelectSingleNode("/IODATA/PAGES/PAGE"); //deklaracja noda xmlowego
if (pageNode != null) //jeżeli PAGE node istnieje
{
XmlNodeList nodeList = document.SelectNodes("//PAGE");
foreach (XmlNode node in nodeList)
{
listPages.Add(node);
}
return listPages;
}
}
在主程序中 Class 我需要获取 xml id
属性的值,我正在尝试这样做:
foreach (object monthlyPage in monthlyPages)
{
Console.WriteLine(monthlyPage.Attributes["id"].Value);
}
问题是当我尝试获取 id
时出现以下错误:
Error 6 'object' does not contain a definition for 'Attributes' and no
extension method 'Attributes' accepting a first argument of type
'object' could be found (are you missing a using directive or an
assembly reference?)
你能告诉我如何在 foreach 循环中访问 xml 属性吗?请询问是否不够清楚。
将方法改为return一个List<XmlNode>
。
public static List<XmlNode> StronyElementuStrukt(string LoginGUID, string LinkGUID)
{
List<XmlNode> listPages = new List<object>();
XmlDocument document = new XmlDocument(); // tworzenie nowego obiektu - dokument xml z odpowiedzia serwera
document.LoadXml(response.Result); //wczytywanie xmla z odpowiedzia serwera do obiektu
XmlNode pageNode = document.SelectSingleNode("/IODATA/PAGES/PAGE"); //deklaracja noda xmlowego
if (pageNode != null) //jeżeli PAGE node istnieje
{
XmlNodeList nodeList = document.SelectNodes("//PAGE");
foreach (XmlNode node in nodeList)
{
listPages.Add(node);
}
}
return listPages;
}
这样就可以了。
List<XmlNode> monthlyPages = StronyElementuStrukt(
loginGuid,
"8B35134E10A8432DB1A8C06A58427988");
foreach (XmlNode monthlyPage in monthlyPages)
{
Console.WriteLine(monthlyPage.Attributes["id"].Value);
}
请注意,您只需将 foreach
更改为将 monthlyPage
声明为 XmlNode
而不是 object
,它就会为您进行转换。但最好具体说明要放入通用集合中的类型。
我将所有出现的地方从 List<object>
更改为 List<XmlNode>
。所以代码现在看起来像这样:
主程序:
List<XmlNode> monthlyPages = new List<XmlNode>();
monthlyPages = StronyElementuStrukt(loginGuid, "8B35134E10A8432DB1A8C06A58427988");
foreach (XmlNodemonthlyPage in monthlyPages)
{
Console.WriteLine(monthlyPage.Attributes["id"].Value);
}
程序:
public static List<XmlNode> StronyElementuStrukt(string LoginGUID, string LinkGUID)
{
List<XmlNode> listPages = new List<XmlNode>();
XmlDocument document = new XmlDocument(); // tworzenie nowego obiektu - dokument xml z odpowiedzia serwera
document.LoadXml(response.Result); //wczytywanie xmla z odpowiedzia serwera do obiektu
XmlNode pageNode = document.SelectSingleNode("/IODATA/PAGES/PAGE"); //deklaracja noda xmlowego
if (pageNode != null) //jeżeli PAGE node istnieje
{
XmlNodeList nodeList = document.SelectNodes("//PAGE");
foreach (XmlNode node in nodeList)
{
listPages.Add(node);
}
return listPages;
}
}
我的主程序 class 调用 StronyElementuStrukt
过程
List<object> monthlyPages = new List<object>();
monthlyPages = StronyElementuStrukt(loginGuid, "8B35134E10A8432DB1A8C06A58427988");
这是程序 - 一种构建 xml 节点列表并将其 returns 到主程序的方法 class:
public static List<object> StronyElementuStrukt(string LoginGUID, string LinkGUID)
{
List<object> listPages = new List<object>();
XmlDocument document = new XmlDocument(); // tworzenie nowego obiektu - dokument xml z odpowiedzia serwera
document.LoadXml(response.Result); //wczytywanie xmla z odpowiedzia serwera do obiektu
XmlNode pageNode = document.SelectSingleNode("/IODATA/PAGES/PAGE"); //deklaracja noda xmlowego
if (pageNode != null) //jeżeli PAGE node istnieje
{
XmlNodeList nodeList = document.SelectNodes("//PAGE");
foreach (XmlNode node in nodeList)
{
listPages.Add(node);
}
return listPages;
}
}
在主程序中 Class 我需要获取 xml id
属性的值,我正在尝试这样做:
foreach (object monthlyPage in monthlyPages)
{
Console.WriteLine(monthlyPage.Attributes["id"].Value);
}
问题是当我尝试获取 id
时出现以下错误:
Error 6 'object' does not contain a definition for 'Attributes' and no extension method 'Attributes' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
你能告诉我如何在 foreach 循环中访问 xml 属性吗?请询问是否不够清楚。
将方法改为return一个List<XmlNode>
。
public static List<XmlNode> StronyElementuStrukt(string LoginGUID, string LinkGUID)
{
List<XmlNode> listPages = new List<object>();
XmlDocument document = new XmlDocument(); // tworzenie nowego obiektu - dokument xml z odpowiedzia serwera
document.LoadXml(response.Result); //wczytywanie xmla z odpowiedzia serwera do obiektu
XmlNode pageNode = document.SelectSingleNode("/IODATA/PAGES/PAGE"); //deklaracja noda xmlowego
if (pageNode != null) //jeżeli PAGE node istnieje
{
XmlNodeList nodeList = document.SelectNodes("//PAGE");
foreach (XmlNode node in nodeList)
{
listPages.Add(node);
}
}
return listPages;
}
这样就可以了。
List<XmlNode> monthlyPages = StronyElementuStrukt(
loginGuid,
"8B35134E10A8432DB1A8C06A58427988");
foreach (XmlNode monthlyPage in monthlyPages)
{
Console.WriteLine(monthlyPage.Attributes["id"].Value);
}
请注意,您只需将 foreach
更改为将 monthlyPage
声明为 XmlNode
而不是 object
,它就会为您进行转换。但最好具体说明要放入通用集合中的类型。
我将所有出现的地方从 List<object>
更改为 List<XmlNode>
。所以代码现在看起来像这样:
主程序:
List<XmlNode> monthlyPages = new List<XmlNode>();
monthlyPages = StronyElementuStrukt(loginGuid, "8B35134E10A8432DB1A8C06A58427988");
foreach (XmlNodemonthlyPage in monthlyPages)
{
Console.WriteLine(monthlyPage.Attributes["id"].Value);
}
程序:
public static List<XmlNode> StronyElementuStrukt(string LoginGUID, string LinkGUID)
{
List<XmlNode> listPages = new List<XmlNode>();
XmlDocument document = new XmlDocument(); // tworzenie nowego obiektu - dokument xml z odpowiedzia serwera
document.LoadXml(response.Result); //wczytywanie xmla z odpowiedzia serwera do obiektu
XmlNode pageNode = document.SelectSingleNode("/IODATA/PAGES/PAGE"); //deklaracja noda xmlowego
if (pageNode != null) //jeżeli PAGE node istnieje
{
XmlNodeList nodeList = document.SelectNodes("//PAGE");
foreach (XmlNode node in nodeList)
{
listPages.Add(node);
}
return listPages;
}
}