这是XML结构:
<items>
<item>
<title>Weź udział w grze historycznej</title>
<link>https://legionowo.pl/a/wez-udzial-w-grze-historycznej</link>
<description><![CDATA[<img src="https://legionowo.pl/img/artykuly/4/2022_07/x41594.jpg.pagespeed.ic.9BJkaqvzdK.jpg%22%3E<br><br>]]></description>
<pubDate>Fri, 01 Jul 2022 09:10:50 +0000</pubDate>
<media:content url="https://legionowo.pl/img/artykuly/4/2022_07/x41594.jpg.pagespeed.ic.9BJkaqvzdK.jpg" medium="image" />
<guid isPermaLink="false">https://legionowo.pl/a/wez-udzial-w-grze-historycznej</guid>
</item>
<items>
这是c#方法:
private async Task _XElementGet()
{
XElement doc = XElement.Load("C:\mail.xml");
List<XElement> list;
list = (from prod in doc.Elements("item")
select prod).ToList();
foreach(XElement item in list)
{
Console.WriteLine(item.Name);
}
}
和它的空,但当我试图使用XDocument它的工作,它看起来:
private async Task _XDocumentGet()
{
XDocument doc = XDocument.Load("C:\mail.xml");
List<XElement> list;
list = (from prod in doc.Descendants("item")
select prod).ToList();
foreach(XElement item in list)
{
//Console.WriteLine(item.Element("title"));
Console.WriteLine(item.FirstAttribute.Value);
}
}
这是第一个。
第二个是关于这个属性"media:content"→我无法得到它的值,因为我得到这个错误消息:
System.Xml。':'字符,十六进制值0x3A,不能包含在名称中。如何从这个属性中读取值
有什么办法可以修复它吗?
尝试如下:
using System;
using System.Linq;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApp2
{
class Program
{
const string FILENAME = @"c:temptest.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
XElement description = doc.Descendants("description").FirstOrDefault();
string descr = (string)description;
string descrDecoded = System.Net.WebUtility.UrlDecode(descr);
}
}
}