0

MSProjectXMLファイルからデータを読み取ろうとしています。XMLスキーマツールを使用して、 Microsoft Project2007XMLスキーマに基づいて厳密に型指定されたクラスのセットを生成しました。

しかし、私はいくつかの問題に遭遇しました。MS ProjectからエクスポートされたXMLのルートノードのxmlnsプロパティが、XSDスキーマと一致しません。

MS Project generates this XML:
<Project xmlns="http://schemas.microsoft.com/project">

Should be:
<Project xmlns="http://schemas.microsoft.com/project/2007">

間違ったxmlnsで逆シリアル化しようとすると、例外がスローされます。

<Project xmlns='http://schemas.microsoft.com/project'> was not expected.

xmlnsを修正すると、例外がスローされます。

Instance validation error: '0' is not a valid value for ProjectTaskFixedCostAccrual.

したがって、XMLスキーマユーティリティがクラスを正しく生成しなかったか、Microsoft Project2007XMLスキーマが正しくないようです。

私の質問は、誰かが以前にこの状況に遭遇したことがありますか?(相互運用以外に)MS Project XMLを解析するためのより良い代替手段はありますか?

4

1 に答える 1

0

考えられる解決策...

逆シリアル化しようとしたデータは、同じアプリケーションの別のコンポーネントからシリアル化されました。生成されたXMLは、各タスクの<FixedCostAccrual>要素を設定しませんでした。XMLをMSProjectにインポートし、XMLとしてエクスポートしました。MS Projectは、エクスポート時に各タスクの<FixedCostAccrual>値を0に設定しました。ただし、有効な値は1〜3の範囲内です。

MS Projectがデフォルト値を範囲外に設定する理由はわかりませんが、解決策は、出力XMLを生成するコンポーネントを修正することでした。

しかし、なぜ間違ったxmlns属性でXMLを生成するのかはまだわかりません。

于 2010-02-12T03:03:03.447 に答える