Jump to content

Import XML data from web to field (EVE Online)


This topic is 4103 days old. Please don't post here. Open a new topic instead.

Recommended Posts

Greetings,

This is a non-work related question, but any help you can offer would be much appreciated. When not fulfilling my daily role as an IT Coordinator, I indulge in the MMO EVE Online. I've been building complex GoogleDocs to check market rates on items when it dawned on me that I could do all that and a lot more with FileMaker.

So here's my situation:

I currently have a button in my FileMaker database that opens this URL. I then copy the content of the page and paste it into a field ("XML_Data"). I then use the custom function ExtractData to pull out the data I need for my calculations.

What I would like:

Each time I open the database, I would like it to automatically retrieve the XML data from the web and put it in the field.

Any ideas? Thanks in advance,

Commander Ben Feingold

CEO of a virtual Corporation...in a virtual world of spaceships and laser guns... :tongue:

Here's the URL incase the link didn't work:

http://api.eve-centr...nlimit=10000002

Link to comment
Share on other sites

Filemaker can import XML data directly - provided you have a XSLT stylesheet to transform the XML to Filemaker's own grammar.

Each time I open the database, I would like it to automatically retrieve the XML data from the web and put it in the field.

Make it a part of your startup script.

Link to comment
Share on other sites

Thank you for the quick reply.

The XSLT is where I get stuck. After reading other people's posts about importing XML, I gather I'm not alone in this. Is there a good, "How to get started making your custom XSLT Stylesheet" forum or guide you can point me to? My friend Google helped me find the XSLT Tutorial at w3schools.com. I took a few minutes to play with the tutorial and I think I understand how it's supposed to work.

Below is an excerpt of XML code. I take this:


This XML file does not appear to have any style information associated with it. The document tree is shown below.

<evec_api method="marketstat_xml" version="2.0">

<marketstat>

	 <type id="9832">

		  <buy>

			   <volume>6365114</volume>

			   <avg>6481.53</avg>

			   <max>7505.05</max>

			   <min>1800.02</min>

			   <stddev>1207.86</stddev>

			   <median>6621.00</median>

			   <percentile>7502.91</percentile>

		  </buy>

		  <sell>

			   <volume>2679134</volume>

			   <avg>8911.18</avg>

			   <max>11300.00</max>

			   <min>7549.66</min>

			   <stddev>774.93</stddev>

			   <median>8500.00</median>

			   <percentile>7549.66</percentile>

		  </sell>

		  <all>

			   <volume>9044248</volume>

			   <avg>7201.25</avg>

			   <max>11300.00</max>

			   <min>1800.02</min>

			   <stddev>1299.05</stddev>

			   <median>7339.70</median>

			   <percentile>3976.32</percentile>

		  </all>

	 </type>

</marketstat>

</evec_api>





And apply something like this to it:









<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Edited by Me -->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">



<xsl:template match="/">

  <html>

  <body>

  <h2>EVE-Central XML Import</h2>

    <table border="1">

      <tr bgcolor="#9acd32">

        <th>Volume</th>

        <th>Average</th>

        <th>Max</th>

        <th>Min</th>

        <th>Standard Deviation</th>

        <th>Median</th>

        <th>Percentile</th>

      </tr>

      <xsl:for-each select="marketstat/type id="?">

      <tr>

        <td><xsl:value-of select="volume"/></td>

        <td><xsl:value-of select="avg"/></td>

        <td><xsl:value-of select="max"/></td>

        <td><xsl:value-of select="min"/></td>

        <td><xsl:value-of select="stddev"/></td>

        <td><xsl:value-of select="median"/></td>

        <td><xsl:value-of select="percentile"/></td>

      </tr>

      </xsl:for-each>

    </table>

  </body>

  </html>

</xsl:template>

</xsl:stylesheet>





Assuming I'm on the right path, I have no idea what to do with this line, as it changes for each item type and this XML has 12 items listed one after another:





<xsl:for-each select="marketstat/type id="?">

As you can see in my XML example, the value is "<type id="9832">" but there could be any number in there.

Edited by Ben Feingold
Link to comment
Share on other sites

  • 5 months later...

This is a continuation of a question I had back in August about importing XML generated via an API. I listed the rest of the question in that thread, but then realized that people might not see it as that initial question was successfully answered. I hope you don't mind my reposting it as a new topic.

 

My latest endeavor is getting my inventory to import. I modified the XSL for the EVE API, added a table with the corresponding names, and modified the script, but I get the following error from FileMaker when I run it and tell FM to retrieve the XML from "https://":

 


XML parsing error:

unable to open primary document entity "

Line Number:0

Column Number: 0

 

If I tell it to get it from "http://..." I get:

 

XML parsing error:


internal error in NetAccessor

Line Number:0

Column Number: 0

 

However, if I use an XML coding program to apply my new stylesheet to the the raw XML provided by EVE's API, and then save the result to it's own XML file, I can easily import the records from the menu File>Import Records>XML Data Source...

 

Any idea what might return this error? Is FileMaker able to retrieve XML from https?

 

I attached three files:

1. The XML from EVE

http://fmforums.com/files/file/34-eve-api-asset-list/

 

2. My XSL

 

3. The XML with the stylesheet applied

Link to comment
Share on other sites

This topic is 4103 days old. Please don't post here. Open a new topic instead.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.