XDocument coordinates = XDocument.Load("http://feeds.feedburner.com/TechCrunch");
System.IO.StreamWriter StreamWriter1 = new System.IO.StreamWriter(DestFile);
XNamespace nsContent = "http://purl.org/rss/1.0/modules/content/";
foreach (var item in coordinates.Descendants("item"))
{
string link = item.Element("guid").Value;
string content = item.Element(nsContent + "encoded").Value; //It gets all links, images etc
}
StreamWriter1.Close();
使用此我可以获得guid
元素值以及content:encoded
值,但content:encoded
元素的值会获取所有链接,标记,
标记等
但我只想要文本...意味着我只需要简单文本数据,而不需要获取任何img链接,链接等。
如何解析XML中的<p>..</p>
标记数据?
请建议
感谢
答案 0 :(得分:2)
您在该XML文档中嵌入了HTML。最安全的做法是获取HTML并使用HTML解析器(例如HTML Agility Pack)解析它并从那里开始。它应该没有那么大的不同。请注意HTML仍然有点编码,所以你必须先解码它。
const string url = "http://feeds.feedburner.com/TechCrunch";
var doc = XDocument.Load(url);
var items = doc.Descendants("item");
XNamespace nsContent = "http://purl.org/rss/1.0/modules/content/";
foreach (var item in items)
{
var encodedContent = (string)item.Element(nsContent + "encoded");
var decodedContent = System.Net.WebUtility.HtmlDecode(encodedContent);
var html = new HtmlDocument();
html.LoadHtml(decodedContent);
var ps = html.DocumentNode.Descendants("p");
foreach (var p in ps)
{
var textContent = p.InnerText;
// do something with textContent
}
}
不幸的是,HTML似乎不是格式良好的XML,因此您将无法使用LINQ to XML。
答案 1 :(得分:1)
答案 2 :(得分:0)
确定内容字符串后,您有以下几种选择: