# Updates

To incrementally modify data loaded over a NetworkLink, use the Update element, which is a child of NetworkLinkControl. Update can contain any number of Change, Create, and Delete elements, which are processed in order.

The figure below illustrates the sequence of events.
![](https://developers.google.com/static/kml/documentation/images/update.gif)

1. A NetworkLink loads the "original" KML file into Google Earth. An element that will later be updated needs to have an explicit *id* defined when it is first specified. The *ids* must be unique within a given file.
2. Another NetworkLink loads a second KML file containing the updates (any combination of Change, Create, and Delete) to the KML object(s) that have already been loaded. The update file contains two references to identify the original KML data:
3. To locate the objects within Google Earth, the Update element uses the *targetHref* element to identify the original file that defined the object(s) to be modified. To identify the object(s) to be modified or the container for new objects, the Change, Create, and Delete elements contain a *targetId* attribute that references the *ids* of those objects.

# Change Example

The following example shows a set of sample NetworkLinks and KML data files. To run the sample:

1. Load the *[Point-load.kml](https://developers.google.com/static/kml/documentation/Point-load.kml)* file into Google Earth. This file contains the NetworkLink that loads the original data file, which contains two points (*Point.kml*).
2. Load the *[Update-load.kml](https://developers.google.com/static/kml/documentation/Update-load.kml)* file into Google Earth. This file contains the second NetworkLink, which loads the file containing the Update data (a new name for *point123*).

The first file contains the NetworkLink that loads the data file, which contains two points. The Placemarks that contain these points have ids assigned to them. The third file contains another NetworkLink, which adds the Update file. The Change element modifies the name of the Placemark for *point123*.

Here are the four files used in this example. First, this is the *Point-load.kml* file, which contains the NetworkLink that loads the original data file (*Point.kml*).

```
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLink>
  <name>Loads Point.kml</name>
  <Link>
    <href>http://developers.google.com/kml/documentation/Point.kml</href>
  </Link>
</NetworkLink>
</kml>
```

Here is the *Point.kml* file, which contains the original data (two points). The point with the id "point123" is the point we will be modifying.

```
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
  <Placemark id="pm123">
    <name>point123</name>
    <Point>
      <coordinates>-95.44,40.42,0</coordinates>
    </Point>
  </Placemark>
  <Placemark id="pm456">
    <name>point456</name>
	  <Point>
      <coordinates>-95.43,40.42,0</coordinates>
    </Point>
  </Placemark>
</Document>
</kml>
```

Next is the second NetworkLink file (*Update-load.kml*). This file loads the file that contains the Update information.

```
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLink>
  <name>Update</name>
  <Link>
    <href>http://developers.google.com/kml/documentation/NetworkLinkControl-Update.kml</href></Link>
</NetworkLink>
</kml>
```

And finally, here is the KML file *(NetworkLinkControl-Update.kml*) that contains the Update information:

```
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLinkControl>
  <Update>
    <targetHref>http://developers.google.com/kml/documentation/Point.kml</targetHref>
    <Change>
      <Placemark targetId="pm123">
        <name>Name changed by Update Change</name>
        <!-- coordinates remain the same -->
      </Placemark>
    </Change>
  </Update>
</NetworkLinkControl>
</kml>
```

[Back to top](https://developers.google.com/kml/documentation/updates#top)