Записать коды набросков с помощью mpxj в xml-файл и импортировать их в ms project 2003/2007
Кто-нибудь получил mpxj и коды для работы с MS Project 2003 или 2007?
Я пытался экспортировать наброски кодов с помощью следующего кода:
ProjectFile project = new ProjectFile();
Task task = project.addTask();
task.setOutlineCode1("outlineCode1");
Получившийся xml выглядел примерно так:
<Project xmlns="http://schemas.microsoft.com/project">
..
<ExtendedAttributes>
<ExtendedAttribute>
<FieldID>188744096</FieldID>
<FieldName>Outline Code1</FieldName>
</ExtendedAttribute>
</ExtendedAttributes>
..
<Tasks>
<Task>
..
<ExtendedAttribute>
<FieldID>188744096</FieldID>
<Value>value</Value>
</ExtendedAttribute>
..
</Task>
</Tasks>
</Project>
Но я не смог найти какие-либо наброски кодов в импортированном проекте..
Когда я вручную добавляю коды структуры в проект, результирующий xml-файл также выглядит не так, как указано выше:
<Project xmlns="http://schemas.microsoft.com/project">
..
<OutlineCodes>
<OutlineCode>
<FieldID>188744096</FieldID>
<FieldName>Outline Code1</FieldName>
<Values>
<Value>
<ValueID>1</ValueID>
<ParentValueID>0</ParentValueID>
<Value>value</Value>
</Value>
..
</Values>
..
</OutlineCode>
</OutlineCodes>
..
<ExtendedAttributes>
<ExtendedAttribute>
<FieldID>188744096</FieldID>
<FieldName>Outline Code1</FieldName>
</ExtendedAttribute>
</ExtendedAttributes>
..
<Tasks>
<Task>
..
<OutlineCode>
<UID>1</UID>
<FieldID>188744096</FieldID>
<ValueID>1</ValueID>
</OutlineCode>
..
</Task>
</Tasks>
</Project>
Так что мне кажется, что я упускаю некоторые важные шаги в процедуре экспорта?!
1 ответ
Я просмотрел источник MPXJ и провел свой собственный быстрый тест, и не похоже, что вы делаете что-то не так. Насколько я могу судить, он просто не поддерживает OutlineCodes так, как это нужно MS Project.
Как вы обнаружили, он выводит их как обычно ExtendedAttributes
, но схема MSPDI определяет набор OutlineCode
элементы специально для их хранения (как вы можете видеть в xml, созданном MS Project). На самом деле, OutlineCode
Элемент хранит ссылку на значение поиска, определенное в Project, а не хранит значение напрямую.
Лучше всего зарегистрировать ошибку на SourceForge и заставить Джона (создателя) взглянуть.