Known Issues with MPXJ
The MPP8 file format is rather cryptic, and one part of it that I have yet to really understand fully is how the Flag fields are stored. I've spent a lot of time looking at this and have not made a lot of progress, so at the moment no further work is being undertaken to fix this. Contributions of insights, knowledge or fixed code for this problem are welcome. You'll find a bug for this item logged in the SourgeForge bug tracker.
Your notes field probably contains characters that are not in Codepage 1252 (Latin 1). The notes text is stored as RTF by MS Project. MPXJ uses Sun's RTF processor to strip the RTF formatting and return the plain text of the notes fields. The RTF processor does not handle characters from other codepages correctly, hence it returns rubblish. See the SourgeForge bug tracker for further details, and a suggested workaround.
Microsoft Project is sensitive to the order in which records appear in the MPX file. The correct order is Calendars, Resources, and Tasks. The current MPX implementation provided by MPXJ simply adds records to the file in the order in which you as a developer add them to the MPXJ project data structure. Therefore if you don't add them in the order expected by Microsoft Project, you won't get the results you expect. This is likely to change in a future release of MPXJ when the project data structure is decoupled from the underlying MPX implementation.
What you are seeing are "hidden" tasks and resources which newer versions of Microsoft Project appear to use as placeholders for summary information about all of the tasks and all of the resources in a project. We're not sure exactly which versions of Project hold data like this, although we think this is only relevant for the MPP9 file format. We've also noticed that the information in these hidden tasks and resources may not be reliable, so don't place too much emphasis on them in your application.
You can ignore the first resource if it has a null value as its name. The attributes of this resource should actually be a summary of all of the resource combined, e.g. utilisation, actual work, remaining work and so on for the complete set of "real" resources.
You can ignore the first task if it has an outline level of zero, this task will be a summary of all the "real" tasks in the project. You may also find that the name of this task matches the name of the project.
Localised versions of MS Project (i.e. those which have been translated for use in a non-Enlish locale) read and write MPX files which include localised text strings. The end result of this is that an English/International version of MS Project can't read MPX files produced by a localised version of MS Project, and vice versa.
MPXJ supports a small number of non-English locales, and can read and write MPX files correctly for those locales. You can also use MPXJ to translate MPX files from one locale to another. The MPXFile.setLocale() method must be called prior to reading or writing an MPX file in order to set the required locale. By default MPXJ will always produce MPX files for the International/English locale, regardless of the locale for which your operating system if configured.
Currently supported locales for MPX files include German, Portuguese, Simplified Chinese and Swedish. Producing a translation for you locale is very easy, please contact us for details on how you can help us to do this.