如何做到这一点? .InnerText属性(在包含div
元素时使用)仅给出了html。是否可以迭代所有包含的li
元素并提取它们的值?
答案 0 :(得分:2)
如果这应该在服务器端完成,请使用HTML Agilitypack。
var nodes = doc.SelectNodes("//ul[@id=\"myId\"]/li");
List<string> items = new List<string>();
foreach (var node in nodes)
items.Add(node.InnerText);
<强>更新强>
执行相同操作的jquery脚本(对于客户端):
<script type="text/javascript">
function convertUlToText(ulID)
{
var text = '';
$('#' + ulID + ' li').each(function() {
text += $(this).html() + '\r\n';
}
return text;
}
</script>
用法:
var textList = convertUlToText('myId');
答案 1 :(得分:2)
假设您在单独的变量中有列表(您已将其解压缩),并且 / li 与下一个 li 之间没有任何内容:
string[] sep = {"</li>"};
foreach (string s in html.Replace("<li>","").Split(sep, StringSplitOptions.None))
//do something with s
一个简单的控制台应用程序,用于测试:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string html = "<li>123</li><li>456</li>";
string[] sep = {"</li>"};
foreach (string s in html.Replace("<li>","").Split(sep, StringSplitOptions.None))
Console.WriteLine(s);
Console.ReadLine();
}
}
}
答案 2 :(得分:1)
是否有可能遍历所有 李元素包含和提取 他们的价值观?
来自OP的评论:
Doctype是HTML 5,有效 码。 - 拉杜
在这种情况下,可以使用以下XPath表达式:
div//li//text()
这将选择所有li
元素的后代的所有文本节点,这些元素是作为当前节点的子元素的任何div
元素的后代。
使用XPath表达式来选择XML中的节点(以及HTML5是格式良好的XML)是一种推荐的,最简单,更可靠的方法,因为难以构建,难以测试,难以理解和维护表达式。
以下是完整的代码示例:
using System;
using System.Xml;
class TestXPath
{
static void Main(string[] args)
{
string html5Text =
@"<html>
<head>
</head>
<body>
<div>
<ul>
<li>Line 1</li>
<li>Line 2</li>
<li>Line 3</li>
</ul>
</div>
</body>
</html>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(html5Text);
string xpathExpr = @"/*/*/div//li//text()";
XmlNodeList selection = doc.SelectNodes(xpathExpr);
foreach (XmlNode node in selection)
{
Console.WriteLine(node.OuterXml);
}
}
}
执行上述应用程序时,会生成所需的正确结果:
Line 1
Line 2
Line 3
答案 3 :(得分:0)
你总是可以用简单的regEx
“强行”它,或者根据开头/结尾标签拆分字符串
答案 4 :(得分:0)
如果可能的话,我会使用jQuery循环遍历UL并返回每个LI的值。这些方面的东西......
$('li').each(function () {
alert($(this).html());
});
当然,如果您需要服务器端的这些值,则需要对页面方法或Web服务进行某种类型的ajax调用。