首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Appointment.Details获取纯文本?

如何从Appointment.Details获取纯文本?
EN

Stack Overflow用户
提问于 2018-01-26 03:38:34
回答 1查看 159关注 0票数 1

我尝试从Appointment.Details获得纯文本,而不是html文档。

我发现,如果事件是由Microsoft日历供应商(例如hotmail )创建的,那么它们的细节将显示在html文档中,而不是纯文本(BTW,如果事件是由Gmail创建的,则它们的细节是乏味的文本)。我试着用下面的方式得到纯文本,但是它不起作用。

代码语言:javascript
复制
var appointmentStore = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AllCalendarsReadWrite);

FindAppointmentsOptions options = new FindAppointmentsOptions { MaxCount = 100 };
options.FetchProperties.Add(AppointmentProperties.Subject);
options.FetchProperties.Add(AppointmentProperties.Details);
options.FetchProperties.Add(AppointmentProperties.DetailsKind);

DateTimeOffset startTime = new DateTimeOffset(new DateTime(2018, 2, 1));
// The UWP api gets the events from the Calendar app of Windows 10 OS.
List<Appointment> evtList = 
    (await appointmentStore.FindAppointmentsAsync(startTime, new TimeSpan(30, 0, 0, 0), options)).ToList();

foreach (var evt in evtList) {

    Debug.WriteLine(evt.Subject);

    // I've found if the events were created in Microsoft calendar supplier, e.g. hotmail,
    // the details of them would be the html document instead of the plain text.
    // I've tried to make the evt.Details presented in the plain text 
    // instead of the html document, but this way doesn't work.
    evt.DetailsKind = AppointmentDetailsKind.PlainText;

    Debug.WriteLine(evt.Details);
}

实际上,我在C++环境中工作,它也可以使用UWP API。我习惯于首先测试和验证C#中的API。

另外,UWP的api,HtmlUtilities.ConvertToText()不能满足我的需求可悲。在我的C++项目中,调用HtmlUtilities.ConvertToText()将导致静态缓冲区溢出

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-29 07:26:14

我发现,如果事件是由Microsoft日历供应商(例如hotmail )创建的,那么它们的细节将显示在html文档中,而不是纯文本(BTW,如果事件是由Gmail创建的,则它们的细节是乏味的文本)。

是的,这是在日历商店应用程序中的"Microsoft日历供应商“的特殊功能。您可以使用它来编辑格式的详细约会。

如果要将详细信息转换为纯文本,可以使用HtmlAgilityPack.NetCore解析html,如下所示。

代码语言:javascript
复制
if (evt.DetailsKind == AppointmentDetailsKind.Html)
{
    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(evt.Details);

    var nodes = doc.DocumentNode.SelectNodes("//p[@class='MsoNormal']");
    foreach (var node in nodes)
    {
        var text = node.InnerText;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48455473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档