html里的table标签,能否转换为c#的DataTable对象?

liuys00 2008-06-25 11:34:28
一个html页面,里面有个table
<table id="dgItemList" 。。。。"> 。。。。。。

我希望在页面对应的c#代码里以DataTable对象的方式获取它,求答案。谢谢!

...全文
614 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxoo2007 2008-06-26
  • 打赏
  • 举报
回复
看提示应该是属性的干扰, 试着加句清除看看.
    //清洗
XmlDocument doc = new XmlDocument();
doc.LoadXml(s);

XmlNodeList nodes= doc.SelectNodes("table/tr");
foreach (XmlElement node in nodes)
{
node.Attributes.RemoveAll(); //这里把Tr所有的属性都去掉

for (int i = 0; i < node.ChildNodes.Count; i++) //列的循环,为每个列指定名称
{
....
}
}


另外XML如果标签之间有空格也会导致XML规则错误, 比如 "<TR> <TD>" 要处理成 "<TR><TD>"
liuys00 2008-06-25
  • 打赏
  • 举报
回复
...
大哥你吃快点。。。
xxoo2007 2008-06-25
  • 打赏
  • 举报
回复
先吃饭,下午来搞
liuys00 2008-06-25
  • 打赏
  • 举报
回复
这个html页面,客户只给我一个url地址,我只能获取,不能修改。怎么办。我希望是写一个方法,参数是url,返回一个datatable对象。
leibolanbo 2008-06-25
  • 打赏
  • 举报
回复
给此table标签加上runat='server'属性后,就可以在后台对他进行各项控制,当然也可以把它new成一个DataTable对象了!
宛飓如风 2008-06-25
  • 打赏
  • 举报
回复
table 和DataTable一个是数据显示数据,一个是数据结构,可以把table转换成服务器控件,就可以获得里面的值,把获得的值赋给DataTable就行了.
hubblebubblepig 2008-06-25
  • 打赏
  • 举报
回复
DataTable和html的table是俩概念 不是一回事情 你可以把DataTable作为数据源提供给数据迭代控件 实现页面table的布局
liuys00 2008-06-25
  • 打赏
  • 举报
回复
to changke18 :问题就是
我不能改动这个页面
只能通过一个url参数来得到其内容


to xxoo2007 :“直接拿过来的Table字串需要根据XML的规则处理下才行。 具体的要看看情况了”
可否说详细些,如何处理,多谢!
int position = sourceStr.IndexOf("<table cellspacing=\"0\" border=\"0\" id=\"dgItemList\"");
sourceStr = sourceStr.Substring(position);
int position2 = sourceStr.IndexOf("</table>");
sourceStr = sourceStr.Substring(0, position2 + 8);//这个是table字符串

西安风影 2008-06-25
  • 打赏
  • 举报
回复
不是不可以
只是你的想法不对。
一个是对象 一个是布局
如果你想要读取table数据
你可以把table设置成runat=“server”
xxoo2007 2008-06-25
  • 打赏
  • 举报
回复
要求Table的字串能符合xml的规范.

直接拿过来的Table字串需要根据XML的规则处理下才行。 具体的要看看情况了。
liuys00 2008-06-25
  • 打赏
  • 举报
回复
郁闷啊,顶起来!
大自然D使者 2008-06-25
  • 打赏
  • 举报
回复
关注并学习……
liuys00 2008-06-25
  • 打赏
  • 举报
回复
执行到这里doc.LoadXml(s);
异常了 System.Xml.XmlException: “=”是意外的标记。标记应为“;”。 行 1,位置 241。

xxoo2007 2008-06-25
  • 打赏
  • 举报
回复
做法是将Table的内容按照XML文档进行处理,在导入dataset.要求Table的字串能符合xml的规范.


string s = "<table><tr><td>aaaa</td><td>bbbb</td></tr><tr><td>rrrr</td><td>uuuu</td></tr></table>";
s = "<?xml version=\"1.0\" standalone=\"yes\"?>" + s;

//清洗
XmlDocument doc = new XmlDocument();
doc.LoadXml(s);

XmlNodeList nodes= doc.SelectNodes("table/tr");
foreach (XmlElement node in nodes)
{
for (int i = 0; i < node.ChildNodes.Count; i++) //列的循环,为每个列指定名称
{
XmlNode n = doc.CreateNode(XmlNodeType.Element,"col" + i.ToString(),"");
n.InnerXml = node.ChildNodes[i].InnerXml;
node.ReplaceChild(n, node.ChildNodes[i]);
}
}

//导入Dataset
StringReader tr = new StringReader(doc.InnerXml);
DataSet ds = new DataSet();
ds.ReadXml(tr);

//显示
gvlist.DataSource = ds.Tables[0];
gvlist.DataBind();
liuys00 2008-06-25
  • 打赏
  • 举报
回复
谢谢 shoushii,但是那个html是只读的,没有runat="server",不能修改。我只能根据传过来的url参数来做。
private DataTable getTVNews(string sourceUrl)
{
WebClient wc = new WebClient();
byte[] bte = wc.DownloadData(sourceUrl);
string sourceStr = Encoding.Default.GetString(bte);
。。。。。 //后面的怎么写
}
shoushii 2008-06-25
  • 打赏
  • 举报
回复
<table id="dgItemList" runat="server"> 


tb.Controls //获得信息
s208ping 2008-06-25
  • 打赏
  • 举报
回复
没法实现

62,054

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧