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正確識別),我是踩了無數坑的,如果有需要的朋友可以跟我聯繫交流