5.2. Using a Pantry XML file
Prev | Chapter 5. Adding new foods and editing the nutrients or units of existing foods | Next

## 5.2. Using a Pantry XML file

You can use Pantry XML files, such as the `foods.xml` file we have created in this example, just as you would use a Pantry native file (the format used by the `master` file.) For example:

Example 5.5. Use a Pantry XML file as you would use a Pantry native file

    $ pantry --name "Clif Bar, Oatmeal Raisin Walnut" --print \
    > traits-nuts foods.xml
    Clif Bar, Oatmeal Raisin Walnut
    Group: Snacks
    1.0 bar (68g)
    Nutrient                  Amount         %G     %TOT
    -------------------------------------------------------
    Calories                  240  kcal       12     100
    Total Fat                 5    g          8      100
    Saturated Fat             1    g          5      100
    Cholesterol               0    mg         0      0
    Sodium                    130  mg         5      100
    Total Carbohydrate        43   g          14     100
    Dietary Fiber             5    g          20     100
    Sugars                    20   g          NA     100
    Protein                   10   g          20     100
    Vitamin A                 1500 IU         30     100
    Vitamin C                 60   mg         100    100
    Calcium                   250  mg         25     100
    Iron                      5    mg         25     100

However, I recommend adding the foods to a Pantry native file, because you will find it most convenient if the foods you create are mingled with the other foods you use, either in the `master` file or in a `quick` file, as we discussed earlier.[13] For example, to add the Clif Bar to my `master` file, I simply run `pantry --add master foods.xml`.

### Pantry destroys data in Pantry XML files!

You may insert comments into your XML file, using XML-standard comments (that is, <!-- like this -->). In addition, you will probably format your XML in a certain way by using tabs and newlines. However, if you make changes to the XML file using `--add`, `--edit`, or `--delete`, Pantry will destroy this formatting and lose the comments. You will also find that, if you use `--add`, `--edit`, or `--delete`, Pantry will rearrange the order of the foods in your XML file and will even rearrange the order of the attributes.

For the time being,[14] one solution to this is to use only the `comment` attribute if you wish to comment on foods. Also, you can simply refrain from making changes to the file using Pantry; Pantry will not destroy data in XML files if it only reading data from them.

[13] In addition, Pantry XML files are slower to process than Pantry native files. If a Pantry XML file contains just a few foods, the difference is not noticeable. However, for more than several dozen foods, the speed difference might begin to add up. That is one reason why Pantry does not use XML as its native file format.

[14] I considered fixing this problem, but the technical hurdles are significant, so it is not likely to be fixed soon, if ever.

Prev | Up | Next
Chapter 5. Adding new foods and editing the nutrients or units of existing foods | Home | 5.3. Using Pantry XML files to edit units or nutrients of foods