Categories: DataverseDynamics 365

FetchXML vs XML

Introduction

If you’re new to Microsoft Dynamics 365 and come across FetchXML, you might assume it’s simply a way to fetch data in an XML document. However, that’s not quite how it works. While XML is typically used for storing and transporting data, in Dynamics 365, “XML” is prefixed with “fetch” to create a new term used for querying data. In this blog post, we’ll explore what FetchXML is and how it differs from standard XML. But before we dive into that, let’s quickly review what XML is and how it’s typically used.

What is XML?

XML (extensible Mark-up Language) is a software and hardware independent tool for storing and transporting data. XML is designed to be self-descriptive which means it describes both its content and structure and it is both human and machine readable. XML tags are not predefined. You must define your own tags. XML is designed to carry data, not to display data. Let’s see an example.

<breakfast_menu>
  <food>
    <name>Macaroni and Cheese</name>
    <price>$5.95</price>
    <description>
      Cheesy, gooey, creamy and oh-so-delicious, Macaroni and Cheese.
    </description>
  </food>
  <food>
      <name>Panini Bread</name>
      <price>$7.95</price>
      <description>
          Panini Bread covered with strawberries and whipped cream
      </description>
  </food>
<breakfast_menu>

In above example, we can see a breakfast menu contains some information about food like name, price and its description. All tags in it is define by us and each tag containing some  data and it is very easy to comprehend.

What is FetchXML?

FetchXML is a proprietary query language that is used in Common Data Service. We call this query language FetchXML  because it is used like a SQL statement with XML instead of standard T-SQL. FetchXML is not exactly like XML but it uses XML like structure to query the data.

How it is different than normal XML?

FetchXML is based on a schema, which is an XML document in which, elements of FetchXML are defined and that describes the capabilities of the FetchXML language. Now we can see that the FetchXML isn’t an actual xml, but in fact, it’s a query language which is based on a predefined XML schema.

You can find more information about FetchXML schema here:

https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/fetchxml-schema

Let’s see an example of FetchXML to understand difference between FetchXML and XML.

<fetch mapping='logical'>   
   <entity name='account'>  
      <attribute name='accountid'/>   
      <attribute name='name'/>   
   </entity>  
</fetch>

Above example is a simple fetchXML query which specify account entity and attributes accountid and name. We can observe that this doesn’t contains any data, but it contains tags which was already define in the schema for the FetchXML query language, which the defines the what data we are fetching, just like a query language like SQL.

You can find more information about FetchXML here:

https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/use-fetchxml-construct-query

Conclusion

As we have seen what is XML and what is FetchXML and how both are different from each other, we can conclude that the FetchXML isn’t an actual XML which store and carry data, but in fact, it’s a query language which is based on a predefined XML schema.