【问题标题】:Filemaker Pro and Import.IO. How to import into FMP using Import.IO API?Filemaker Pro 和 Import.IO。如何使用 Import.IO API 导入 FMP?
【发布时间】:2016-03-06 04:30:17
【问题描述】:

我在 Import.IO 中有一个不错的网络抓取工具,我想设置从 Import.IO 到 Filemaker Pro 的自动上传。我已经花了几个月的时间,但我不知道为什么它不起作用。 这是我所做的。 我不会详细介绍 Import.IO 的内容,因为最后您可以选择以 Excel、CSV、JSON 或使用我想要的 RESTful 类型技术通过他们的 API 导出。 我有我的 API,但是当我将它导入 FMP 时,我总是收到此错误

“第 1 行错误,字符 1”。

我手工开发的样式表如下:

<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
            <METADATA>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Input" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Result Number" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Widget" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Data Origin" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Result Row" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Source Page URL" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Link" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="f8" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="f9" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="f10" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Address" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Price" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Availability" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Baths" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Beds" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Cars" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="New" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Open" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Agent" TYPE="TEXT"/>
            </METADATA>
            <RESULTSET>
                <ROW>
                    <COL><DATA><xsl:value-of select="@input"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Result Number"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Widget"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Data Origin"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Result Row"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Source Page URL"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Link"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@f8"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@f9"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@f10"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Address"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Price"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Availability"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Baths"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Beds"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Cars"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@New"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Open"/></DATA></COL>
                    <COL><DATA><xsl:value-of select="@Agent"/></DATA></COL>
                </ROW>
            </RESULTSET>
        </FMPXMLRESULT> 
    </xsl:template>
</xsl:stylesheet>

问题:

  1. 如何根据 Import.IO 中的数据验证上述样式表?我很乐意将其导出到 Excel 并从那里进行测试。

  2. 上面的样式表有什么明显的问题吗?

  3. 如何将我的 API 放在这里以便其他人可以在 FMP 中对其进行测试?

FMP 是一个很棒的系统,但说实话,它的 RESTful 文档很糟糕。我对 Web 服务、XML 导入和 RESTful 协议知之甚少,如果有其他建议,我将不胜感激。

谢谢

更新 伙计们,我不是 XML 专家,或者对 XSL 和样式表一无所知。 我想要的只是能够使用 Import.IO 的 API 将数据导入 Filemaker Pro。就这么简单! 我不想创建服务器、翻译器或花哨的东西。 我原以为 Import.IO API 就足够了,他们的视频暗示了这一点(虽然不是 FMP)。 因此,除非你们愿意踏入我的世界,创建一个免费的 Import.IO 帐户,创建一个 API 并使用 FMP 对其进行测试,否则我真的不知道我还能给你什么。我完全是 XML、XSL 和 RESTful 的初学者。 我也不是要你用勺子喂我。我只需要一个正确的例子来说明如何使这项工作-如果它确实有效! 我唯一的选择是将我的网络抓取数据从 Import.IO 导出为 CSV,然后将其直接导入到 FMP 的临时表中。如此简单,但如此手动! 必须有一个自动解决方案。 谢谢

【问题讨论】:

  • 更新您的信息:我可以帮助您处理 XSLT - 如果您发布了调用 API 后收到的原始 XML。恐怕我没有时间自己试验 API。

标签: xml excel xslt filemaker import.io


【解决方案1】:

上面的样式表有什么明显的问题吗?

是的,有几件事。首先,XML 中的名称不能包含空格 - 所以当您调用时:

<xsl:value-of select="@Result Number"/>

或:

<xsl:value-of select="@Data Origin"/>

这会产生错误。

接下来,您的上下文是根/ 节点,它不能有属性。因此,所有您的 DATA 元素将为空。

这并不意味着您报告的错误是由任何这些缺陷引起的。应该不是。

如何将我的 API 放在这里以便其他人可以在 FMP 中对其进行测试?

您的 API 没有 URL 吗?

【讨论】:

  • 感谢您的建议。是的,API 是一个 URL,但这对我们和我们的 Import.io 帐户来说不是一个安全问题吗?
  • @Fernando68 我对 import.io 了解不多,无法回答这个问题。他们不提供用于测试的“沙箱”吗?如果没有,你能不为自己创建这样的“沙盒”帐户吗? - 从我读到的很少内容来看,他们所做的只是重新格式化一个公开可用的站点 - 因此将 URL 发布到结果并不比原始站点的 URL 更具揭示性。但这只是我的猜测。
  • 哇,你真的花了几个月的时间吗?一个小时左右就可以解决。在这种情况下,我个人不会使用 XSL,因为它就像用榴弹炮射击苍蝇一样。一个简单的(并且是 FileMaker 原生的!)PHP 脚本,它对 API 进行 cURL 并使用 simpelXML 呈现可导入的 XML,这是一个超级简单、易于维护且节省时间的解决方案。如果你还没有解决这个问题,去 PHP/simpleXML 并在今天下午完成......
  • 是的。使用默认设置安装 FileMaker 服务器会安装 PHP。如果它是您不喜欢的“原生”工作,我们可以将其更改为其他内容,所有 FileMaker Server 都附带有非精简的 PHP,并在安装后进行配置并准备好使用。我认为它为像 OP 要求的小任务提供了更快的开发方式。我并不是说 PHP 比 XSL 更好,但对大多数人来说更容易理解。如果真的花了一个月的时间,我建议使用新策略......
  • 您假设此处安装了 FileMaker Server。并且它被用于 CWP/PHP。并且那个OP知道如何使用两者。我认为这些假设中的任何一个都没有依据。 -- OTOH,导入 XML FileMaker Pro 应用程序原生的,XSLT 语言更适合 XML 处理,任何东西,它可以在一个小时内学会或两个(最后是与手头任务相关的部分)。
【解决方案2】:

除非您传递具有 19 个属性的单个节点,否则您的样式表没有意义。这就带来了第二个问题——为什么你的一些属性有空格。我现在不使用 Import.IO,但这会破坏一般 XML 规则。

您不验证您的样式表,您应该验证您的 XML。样式表要么有效,要么无效 - 您只需对其进行测试。

尝试在样式表的帮助下发布示例 XML。

FIleMaker 不是 RESTful 应用程序,我不知道您指的是什么文档。如果你需要使用 RESTful 看看 restfm:

http://www.restfm.com/

【讨论】:

  • "FIleMaker 不是 RESTful 应用程序" 我认为这与问题无关:OP 希望从 RESTful API 导入,而不是提供。跨度>
  • 我对此表示赞赏,但该评论是为了回应 OP 抱怨 FileMaker“糟糕”的 RESTful 文档。
  • @NicolaiKant XML 没有意义?好吧,请帮助我理解它。 他们的 XML 标准的 FMP 文档是垃圾。例如,没有什么可以解释如何避免前 2 行数据。什么对你有意义?
  • 对不起,但仍然没有意义。为什么要避免前两行数据?不要导出它们或从导入中删除它们。它不是 FIleMaker XML 没有意义,它是您的 XSLT。请重新阅读 Michael 的回复,您正在映射到带有空格的属性,因此您传入的 XML 将无法通过标准 XML 验证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多