java用mpxj包讀取Microsoft Project 導出的xml文件

1、mpxj包的maven代碼

<dependency>
    <groupId>net.sf.mpxj</groupId>
    <artifactId>mpxj</artifactId>
    <version>6.2.0</version>
</dependency>
2、上傳xml文件,將文件裝換成File類型,在後臺使用mpxj的MSPDIReader類來實例化。然後得到ProjectFile對象

ProjectReader reader = new MSPDIReader();
ProjectFile project = reader.read(file);
3、讀取ProjectFile對象。得到的是你上傳那個文件中的所有計劃。其中,下標爲0的Task對象是是你計劃中看不見的最頂級根計劃

project.getAllTasks()
4、Task對象中的getUniqueID()能夠得到該計劃的唯一編號(在xml中是UID)。
5、project對象中有兩個重要的標籤tasks(裏面全是task標籤)和assignments(裏面全是assignment標籤),這兩個標籤下面都各自有一套獨立的唯一編號。而每一個最底層的task標籤會對應一個assignment標籤(assignment中的TaskUID就是task中的UID)
6、task和assignment中又有TimephasedData標籤。這個標籤在proejct導出成xml時是大量存在的,會導致xml文件比mpp文件大N多倍,
所以我們可以在用mpxj轉換前把這個xml文件中的TimephasedData去掉,我是用的sax來讀取的xml。
7、TimephasedData只需要在從我們的系統中導出成xml時才需要使用,此時再通過sax在相應位置加上即可
8、其它的我也不知道說什麼了,反正做這個功能(導入xml以及在系統中變更之後又導出成xml並讓Microsoft Project正確識別),我是踩了無數坑的,如果有需要的朋友可以跟我聯繫交流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章