我查询了我的测试网站的页面内容,如以下问题所述:
Read site page contents in Sharepoint using CSOM
foreach (var listItem in items)
{
if (listItem["Title"].ToString() == "My Page")
{
var theItem = listItem;
label2.Content = label2.Content + "\n" + listItem["CanvasContent1"];
}
}
我的测试页面中有一个表,它看起来像这样:
C#的查询输出是:
<div><div data-sp-canvascontrol=\"\" data-sp-canvasdataversion=\"1.0\" data-sp-controldata=\"{"controlType":4,"displayMode":2,"id":"1d20c0ad-511c-490f-95d7-acc172475797","position":{"zoneIndex":1,"sectionIndex":1,"controlIndex":1},"innerHTML":"<p>Hello Page</p>\\n\\n<div class=\\"canvasRteResponsiveTable\\">\\n<p>&nbsp;</p>\\n\\n<div class=\\"canvasRteResponsiveTable\\">\\n<table style=\\"caret-color:#000000; color:#000000; font-family:-webkit-standard; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; orphans:auto; text-align:start; text-transform:none; white-space:normal; widows:auto; word-spacing:0px; -webkit-text-size-adjust:auto; -webkit-text-stroke-width:0px; text-decoration:none; border-collapse&
#58;collapse; border:1px solid #000000\\">\\n\\t<tbody>\\n\\t\\t<tr>\\n\\t\\t\\t<td style=\\"border:1px solid #000000; width:89px\\" valign=\\"top\\">\\n\\t\\t\\t<p style=\\"margin-left:0px; margin-right:0px\\"><b>Type</b></p>\\n\\t\\t\\t</td>\\n\\t\\t\\t<td style=\\"border:1px solid #000000; width:89px\\" valign=\\"top\\">\\n\\t\\t\\t<p style=\\"margin-left:0px; margin-right:0px\\"><b>Name</b></p>\\n\\t\\t\\t</td>\\n\\t\\t</tr>\\n\\t\\t<tr>\\n\\t\\t\\t<td style=\\"border:1px solid #000000; width:89px\\" valign=\\"top\\">\\n\\t\\t\\t<p style=\\"margin-left:0px; margin-right:0px\\">A</p>\\n\\t\\t\\t</td>\\n\\t\\t\\t<td style=\\"border:1px solid #000000; width:89px\\" valign=\\"top\\">\\n\\t\\t\\t<p style=\\&qu
ot;margin-left:0px; margin-right:0px\\">Carl</p>\\n\\t\\t\\t</td>\\n\\t\\t</tr>\\n\\t\\t<tr>\\n\\t\\t\\t<td style=\\"border:1px solid #000000; width:89px\\" valign=\\"top\\">\\n\\t\\t\\t<p style=\\"margin-left:0px; margin-right:0px\\">B</p>\\n\\t\\t\\t</td>\\n\\t\\t\\t<td style=\\"border:1px solid #000000; width:89px\\" valign=\\"top\\">\\n\\t\\t\\t<p style=\\"margin-left:0px; margin-right:0px\\">Tom</p>\\n\\t\\t\\t</td>\\n\\t\\t</tr>\\n\\t\\t<tr>\\n\\t\\t\\t<td style=\\"border:1px solid #000000; width:89px\\" valign=\\"top\\">\\n\\t\\t\\t<p style=\\"margin-left:0px; margin-right:0px\\">C</p>\\n\\t\\t\\t</td>\\n\\t\\t\\t<td style=\\"border:1px solid #000000; width:89px\\" valign=\\"top\\">\\n\\t\\t\\t<p style=\\"
;margin-left:0px; margin-right:0px\\">Ana</p>\\n\\t\\t\\t</td>\\n\\t\\t</tr>\\n\\t</tbody>\\n</table>\\n</div>\\n\\n<p>&nbsp;</p>\\n</div>\\n\\n<p>&nbsp;</p>\\n","editorType":"CKEditor","addedFromPersistedData":true}\"><div data-sp-rte=\"\"><p>Hello Page</p>\n\n<div class=\"canvasRteResponsiveTable\">\n<p> </p>\n\n<div class=\"canvasRteResponsiveTable\">\n<table style=\"color:#000000;font-family:-webkit-standard;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;border-collapse:collapse;border:1px solid #000000;\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td style=\"border:1px solid #000000;width:89px;\" valign=\"top\">\n\t\t\t<p style=\"margin-left:0px;margin-right:0px;\"><b>Type</b></p>\n\t\t\t</td>\n\t\t\t<td style=
\"border:1px solid #000000;width:89px;\" valign=\"top\">\n\t\t\t<p style=\"margin-left:0px;margin-right:0px;\"><b>Name</b></p>\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"border:1px solid #000000;width:89px;\" valign=\"top\">\n\t\t\t<p style=\"margin-left:0px;margin-right:0px;\">A</p>\n\t\t\t</td>\n\t\t\t<td style=\"border:1px solid #000000;width:89px;\" valign=\"top\">\n\t\t\t<p style=\"margin-left:0px;margin-right:0px;\">Carl</p>\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"border:1px solid #000000;width:89px;\" valign=\"top\">\n\t\t\t<p style=\"margin-left:0px;margin-right:0px;\">B</p>\n\t\t\t</td>\n\t\t\t<td style=\"border:1px solid #000000;width:89px;\" valign=\"top\">\n\t\t\t<p style=\"margin-left:0px;margin-right:0px;\">Tom</p>\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"border:1px solid #000000;width:89px;\" valign=\"top\">\n\t\t\t<p style=\"margin-left:0px;margin-right:0px;\">C</p>
\n\t\t\t</td>\n\t\t\t<td style=\"border:1px solid #000000;width:89px;\" valign=\"top\">\n\t\t\t<p style=\"margin-left:0px;margin-right:0px;\">Ana</p>\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>\n</div>\n\n<p> </p>\n</div>\n\n<p> </p>\n</div></div></div>
NET/CSOM是否有更智能地阅读这些数据的方法,比如Map对象或字符串中的某种查询,以便我可以从Page中的表中提取数据?
基本上,我只是想要一种更好的方法来从这个变量中提取数据:
listItem["CanvasContent1"]
而不是试图解析一个巨大的html输出
3条答案
按热度按时间zengzsys1#
我知道这是旧的,但我正在寻找建议,遇到了你的问题。我相信没有人有一个正确的答案。我相信我们能做的最好的就是完全解码HTML,然后解析和选择元素。
完全解码它需要多次传递:
然后使用类似https://html-agility-pack.net的东西来选择我们想要的节点和内容。
我还没有实现这一点,但这是我将在一个我即将开始的项目中遵循的策略。
希望这对某人有帮助。
5fjcxozz2#
你的问题不是真实的清楚,但是你可以从任何列表中访问列表内容,包括使用REST Web服务调用的SitePages。
您可以从JavaScript进行SharePoint REST API调用,并使用返回的JSON快速创建包含数据的JavaScript对象。
txu3uszq3#
我能想到的唯一方法是使用Jsoup for Java或BeautifulSoup for Python来解析来自CanvasContent1的HTML内容。
您应该能够导航到相应的div元素并提取所需的部分。唯一的问题是,每个页面可能不会遵循类似的结构。
因此,您需要定义一个结构,并将其通知给网站开发人员,使其通用。