【问题标题】:R - Parsing XML from SharePoint ListR - 从 SharePoint 列表中解析 XML
【发布时间】:2020-11-27 21:38:28
【问题描述】:

我正在从 SharePoint 列表中收集数据。连接有效;但是,当完整列表中的项目超过 25,000 项时,列表限制为 1,000 项。与 Tableau 和 Excel 的相同连接提供了完整列表。

URL <- "http://XXXXXX/XXXXXX/_vti_bin/ListData.svc/RequiredLearningStatus"
URL_parsed <- xmlParse(readLines(URL,warn=F))
items <- getNodeSet(URL_parsed, "//m:properties")
x <- xmlToDataFrame(items, stringsAsFactors = FALSE)

readLines() 函数执行时收到以下错误消息:

“在 readLines(URL) 中:找到不完整的最后一行”

如何处理 EOL 错误并检索完整列表?

【问题讨论】:

    标签: r xml sharepoint


    【解决方案1】:

    我这里只有一个基本的了解,但我会尽力提供帮助,因为目前还没有答案,我自己已经成功了。

    我用于拉入我的 SP 列表(包括所有项目)的 URL 结构使用列表的 GUID,如下所示:

    "https://XXXX/XXXX/_vti_bin/owssvr.dll?Cmd=Display&Query=*&XMLDATA=TRUE&List={<<YOUR GUID HERE>>}"
    

    为了得到你的 GUID,我抄袭了这个link

    有时您需要查找列表的 Id(Guid)——例如 例如,在设置要与 SharePoint 一起使用的任务列表时 设计器工作流程(请参阅我的博客文章)。这里有一个简单的方法 这样做:

    • 使用浏览器导航到 SharePoint 列表。
    • 选择“设置”+“列表设置”菜单命令。
    • 将浏览器地址栏中的 URL 复制到记事本中。它看起来像:

      • http://moss2007/ProjectX/_layouts/listedit.aspx?List=%7B26534EF9%2DAB3A%2D46E0%2DAE56%2DEFF168BE562F%7D
    • 删除“List=”之前的所有内容,包括“List=”。

    • 将“%7B”更改为“{”
    • 将所有“%2D”更改为“-”
    • 将“%7D”更改为“}”

    您现在只剩下 Id:

    {26534EF9-AB3A-46E0-AE56-EFF168BE562F}

    获得该 URL 后,我正在以稍微不同的方式读取数据:

    library(RCurl)
    library(XML)
    library(data.table)
    
    URL <- "https://XXXX/XXXX/_vti_bin/owssvr.dll?Cmd=Display&Query=*&XMLDATA=TRUE&List={<<YOUR GUID HERE>>}"
    xml <- xmlParse(getURL(URL, userpwd='<<youruser>>:<<yourpass>>'))
    finalData <- data.table(do.call(rbind,xmlToList(xmlRoot(xml)[['data']]))
    

    在上面的代码中,确保将&lt;&lt;YOUR GUID HERE&gt;&gt;&lt;&lt;youruser&gt;&gt;:&lt;&lt;yourpass&gt;&gt; 替换为适合您环境的值。任何代码中都不应有&lt;&gt;(除了R 的赋值,&lt;-)。

    【讨论】:

    • 我在使用您的解决方案时收到一条新的错误消息:错误:1:属性值中不允许未转义的 '
    • @DaleKube 我必须确定,您是否将&lt;&lt;YOUR GUID HERE&gt;&gt;&lt;&lt;youruser&gt;&gt;:&lt;&lt;yourpass&gt;&gt; 替换为适合您环境的值?也许我应该在我的原始答案中指出这一点,我现在会更新,但任何代码中都不应该有 &lt;&gt;
    • 是的。我用适当的值替换了这些部分。我没有在代码中包含插入符号。
    • 您是否能够手动单步执行控制台中的每一行并找出发生错误的特定行? (我正在查看 xml &lt;-finalData &lt;-,但我不熟悉该错误,无法立即知道。)
    • 在此部分xml &lt;- xmlParse(getURL(URL, userpwd='username:password')) 中,getURL 调用返回以下嵌入在返回的 XML 中的错误消息:“禁止尝试的操作,因为它超出了管理员强制执行的列表视图阈值”。
    猜你喜欢
    • 2019-09-13
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2018-08-12
    相关资源
    最近更新 更多