Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML文件到html表(循环)C#_C#_.net_Xml - Fatal编程技术网

XML文件到html表(循环)C#

XML文件到html表(循环)C#,c#,.net,xml,C#,.net,Xml,我有以下xml文件,并希望将其解析为带有c#的.aspx表。我已经有了一个带有aspx和cs文件的页面。我尝试过这个,但遇到了一个错误。任何想法。非常感谢。 我还需要让每个节点都有一个指向html锚的链接,如果可能的话,它可以指向该项目 XmlDocument Doc = new XmlDocument(); Doc.Load(Server.MapPath("NewsSrc.xml")); XmlElement root = Doc.DocumentElement; XmlNodeList no

我有以下xml文件,并希望将其解析为带有c#的.aspx表。我已经有了一个带有aspx和cs文件的页面。我尝试过这个,但遇到了一个错误。任何想法。非常感谢。 我还需要让每个节点都有一个指向html锚的链接,如果可能的话,它可以指向该项目

XmlDocument Doc = new XmlDocument();
Doc.Load(Server.MapPath("NewsSrc.xml"));
XmlElement root = Doc.DocumentElement;
XmlNodeList nodes = root.SelectNodes("/News");
if (!IsPostBack)
{
Table tbl = new Table();
tbl.ID = "table1";
tbl.BorderWidth = 1;
this.Controls.Add(tbl);

foreach (XmlNode node in nodes)
{
TableRow rw = new TableRow();
TableCell cell = new TableCell();
var element = (XmlElement)node;
var Title = element.Value; //["Title"];
NewsItemTxt.Text = Title; //NewsItemtxt is label;
cell.Controls.Add(NewsItemTxt);
rw.Cells.Add(cell);
tbl.Controls.Add(rw); 
}
}
//xml文件是//

<?xml version="1.0" encoding="utf-8" ?>
<!-- Edited by myself  -->
<News>
<NewsItem id="1">
<Title> news tile one </Title>
<Summary> this is summary to show ....</Summary>
<Details>details for this news</Details>
</NewsItem>

<NewsItem id="2">
<Title>test title </Title>
<Summary>sm line</Summary>
<Details> no details</Details>
</NewsItem>
</News>

新闻片一
这是要显示的摘要。。。。
这条新闻的细节
考试题目
sm线
没有细节

此答案假设我们讨论的是ASP.NET解决方案:


也许你应该看看。一旦配置好数据源,您就可以绑定到GridView/DataList控件(如果您希望对控件输出进行更细粒度的控制,也可以绑定到Repeater)。

在我们知道错误之前,这里有一个秘密:

如果该节点的
NodeType
是“Element”(从文档的简要浏览来看,这可能就是
标记所考虑的),则其
属性将为空:

您可以使用xmlement.InnerTextxmlement.InnerXml属性 访问元素节点的值


看看这能不能解决问题。再说一次,我的最佳猜测是,我们不知道到底出了什么问题。

试试这个,它使用的是System.Xml和System.Xml.Linq,应该可以工作,但我不能保证:

var xmlDoc = XDocument.Load(new XmlTextReader(Server.MapPath("NewsSrc.xml")));
foreach(var descendant in xmlDoc.Descendants("NewsItem"))
{
   var title = descendant.Element("Title").Value;
   var summary = descendant.Element("Summary").Value;
   var details = descendant.Element("Details").Value;
   var id = descendant.Attribute("id").Value;
}

我强烈建议在客户端而不是服务器上执行此操作;好的,你已经告诉我们哪条线出错了。错误是什么?检查我的更新答案,这是有效的,你所需要做的就是使用变量标题,描述和细节的方式,你want@SeanThoman当前位置不是我不同意或同意你的观点,而是你的理由是什么?有人能修复我的代码吗。我不想要gridview。谢谢你没有告诉我们你的错误是什么,不,我们不能“只修复你的代码”。非常感谢,这很好。关于如何将html锚定到每个节点/元素的任何想法。例如,有没有一种方法可以调用ID。thanks@Fm3我还添加了如何在我的答案中获得属性值“id”,关于锚定标记,您可以创建一个超链接控件,将所需的url与id值一起添加,并将其插入单元格。还有,既然我的答案有帮助,你应该接受它作为答案。