C#读取html中的标记

newma 2008-11-11 05:30:09
文件格式是
<html>
<head>
</head>
<body>
<table>
<tr>
<td>学生</td>
    <td>成绩</td>
</tr>
</table>
</body>
</html>
类似这样的,,用C#读取其中的数据。。。。
...全文
1048 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghuadong 2008-11-12
  • 打赏
  • 举报
回复
楼主给分啊:
相当于直接解析xml,一样的:
                XmlNode child = null;
alliedXmlDocument = new XmlDocument();
alliedXmlDocument.LoadXml(xmlStr);
child = alliedXmlDocument.SelectSingleNode(/html/body/...路径);
if (child != null)
{
WebOrderHeaderEntity.FromGlobalPartnerRoleClassificationCode = PunchoutHelper.GetXMLChildValue(child);
}

上面显示声明一个XmlNode
然后在声明一个XmlDocument,
在把html(xmlStr)该值加载进来,
用SelectSingleNode解析xml
然后用得到了一个child,用PunchoutHelper.GetXMLChildValue()方法解析就可以了
这个方法是:
        /// <summary>
/// Get XML Child Value
/// </summary>
/// <param name="child">xml child node</param>
/// <returns>child node value</returns>
public static string GetXMLChildValue(XmlNode child)
{
if (child != null)
{
XmlNodeReader nr = new XmlNodeReader(child);
while (nr.Read())
{
if (nr.HasValue == true)
{
return nr.Value;
}
}
}
return null;
}

解析出来赋给一个实体属性了
newma 2008-11-12
  • 打赏
  • 举报
回复
webBrowser1.DocumentText = @"<html>
<head>
</head>
<body>
<table>
<tr>
<td>学生 </td>
    <td>成绩 </td>
</tr>
</table>
</body>
</html>
";

if (webBrowser1.Document != null)
{
HtmlDocument doc = webBrowser1.Document;
HtmlElement textElem = doc.CreateElement("DIV");
textElem.InnerText = "smc";
doc.Body.AppendChild(textElem);
}


}

大家看这段没什么问题吧...
运行的时候说
未将对象引用设置到对象的实例。

newma 2008-11-11
  • 打赏
  • 举报
回复
想问一下htmlDocument怎么用,,,怎么获取对象。。。。
最好有实例讲解。。
止戈而立 2008-11-11
  • 打赏
  • 举报
回复

//可以用正则:
using System.Text.RegularExpressions;

Regex reg=new Regex("(?<=<td>[\s\S]*(?=</td>)");
string result=string.Empty;
string html="你的网页代码";
foreach(Match m in reg.Matchs(html))
{
result+=m.Value+"\r\n";
}

或者:
string result=Regex.Replace(html,"<[^>]*>","").Trim();
wzw200 2008-11-11
  • 打赏
  • 举报
回复
RemoteHtmlReader reader = new RemoteHtmlReader();
private void button1_Click(object sender, EventArgs e)
{
if (this.textBox2 .Text !="")
{
string[] tokens = this.textBox2.Text.Split(':');
this.reader.Proxy = new System.Net.WebProxy(tokens[0], int.Parse(tokens[1]));
}
this.reader.URL = this.textBox1.Text;
string html = this.reader.GetHTML();

this.progressBar1.Maximum = html.Length;
string[] urls = this.reader.GetUrls();

textBox1.Text是你的URL
this.textBox2 .Text 是你的代码:192.168.1.1:8080

string html = this.reader.GetHTML();可能得到你的HTML文本
在文本里可以找到你要的东西
newma 2008-11-11
  • 打赏
  • 举报
回复
老大,,能给点例子吗???
liuyun1987 2008-11-11
  • 打赏
  • 举报
回复
用正则也行。。
newma 2008-11-11
  • 打赏
  • 举报
回复
能在详细点么。。。怎么取<td></td>这之间的数据。。能给出例子吗?、、
carlo_pan 2008-11-11
  • 打赏
  • 举报
回复
HtmlDocument
风骑士之怒 2008-11-11
  • 打赏
  • 举报
回复
xml的翻版原理
bbbbbb888888 2008-11-11
  • 打赏
  • 举报
回复
HtmlDocument.
ustbwuyi 2008-11-11
  • 打赏
  • 举报
回复
当作文本读就行了
lqscoke 2008-11-11
  • 打赏
  • 举报
回复
归范的话,就用XmlDocument来读吧·

110,560

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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