[英]No output from Linq to XML
I have the following code: 我有以下代码:
protected void Page_Load(object sender, EventArgs e)
{
XElement xml = XElement.Load(Server.MapPath("ArenasMembers.xml"));
var query = from p in xml.Descendants("members")
select new
{
Name = p.Element("name").Value,
Email = p.Attribute("email").Value
};
foreach (var member in query)
{
Response.Write("Employee: " + member.Name + " " + member.Email + "<br />");
}
}
Which, using the hover information in Visual Studio, is reading the XNL file in correctly, however the foreach is not outputting any of the records. 其中,使用Visual Studio中的悬停信息正在正确读取XNL文件,但是foreach没有输出任何记录。
XML: XML:
<?xml version="1.0" encoding="utf-8" ?>
<members>
<member>
<arena>EAA Office</arena>
<memberid>1</memberid>
<name>Jane Doe</name>
<email>test@gmail.com</email>
</member>
<member>
<arena>EAA Office</arena>
<memberid>2</memberid>
<name>John Bull</name>
<email>jb@ehotmail.org</email>
</member>
<member>
<arena>O2 Arena</arena>
<memberid>3</memberid>
<name>John Doe</name>
<email>john.doe@o2arena.co.uk</email>
</member>
<member>
<arena>O2 Arena</arena>
<memberid>4</memberid>
<name>Bernard Cribbins</name>
<email>bernard@gmail.com</email>
</member>
<member>
<arena>Colourline Arena</arena>
<memberid>5</memberid>
<name>John Bon Jovi</name>
<email>jbj@gmail.com</email>
</member>
<member>
<arena>NIA</arena>
<memberid>6</memberid>
<name>Rhianna</name>
<email>skimpy@gmail.com</email>
</member>
</members>
Can you see what is wrong? 你能看出什么问题吗?
Insted of "members" try "member"... “会员”的遗嘱尝试“会员”......
Descendants
returns you all the child elements under given Element
, in your code you are querying members
with name
and email
, which wont work. Descendants
返回给定元素下的所有子元素,在您的代码中,您使用name
和email
查询members
,这些Element
不起作用。
Sample Code: 示例代码:
var query = from p in xml.Descendants("member")
select new
{
Name = p.Element("name").Value,
Email = p.Element("email").Value
};
Changing Attribute("email") into Element("email") worked out just fine for me. 将属性(“电子邮件”)更改为元素(“电子邮件”)对我来说很合适。 tested, hopefully approved.
经过测试,希望获得批准。
public void XMLTEst()
{
var xml = @"<?xml version='1.0' encoding='utf-8' ?>"
+ " <members>"
+ " <member>"
+ " <arena>EAA Office</arena> "
+ " <memberid>1</memberid> "
+ " <name>Jane Doe</name> "
+ " <email>test@gmail.com</email> "
+ " </member> "
+ " <member> "
+ " <arena>EAA Office</arena> "
+ " <memberid>2</memberid> "
+ " <name>Linda Bull</name> "
+ " <email>linda.bull@eaaoffice.org</email> "
+ " </member> "
+ " <member> "
+ " <arena>O2 Arena</arena> "
+ " <memberid>3</memberid> "
+ " <name>John Doe</name> "
+ " <email>john.doe@o2arena.co.uk</email> "
+ " </member> "
+ " <member> "
+ " <arena>O2 Arena</arena> "
+ " <memberid>4</memberid> "
+ " <name>Bernard Cribbins</name> "
+ " <email>bernard@gmail.com</email> "
+ " </member> "
+ " <member> "
+ " <arena>Colourline Arena</arena> "
+ " <memberid>5</memberid> "
+ " <name>John Bon Jovi</name> "
+ " <email>jbj@gmail.com</email> "
+ " </member> "
+ " <member> "
+ " <arena>NIA</arena> "
+ " <memberid>6</memberid>"
+ " <name>Rhianna</name>"
+ " <email>skimpy@gmail.com</email>"
+ " </member>"
+ "</members>";
XElement xmlFile = XElement.Parse(xml);
var query = from p in xmlFile.Descendants("member")
select new
{
Name = p.Element("name").Value,
Email = p.Element("email").Value
};
foreach (var member in query)
{
Response.Write("Employee: " + member.Name + " " + member.Email + "<br />");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.