meraの日記: VISIOで吐き出したXML
日記 by
mera
ようするに、オブジェクトと、コネクタ情報さえあればよいので、それ以外のページ情報や形状情報は全て破棄して取り込むべし。
下記XMLはVISIOで2つの矩形とその矩形を結んだ1本のライン(コネクタ)を示している。ちなみに2つめの矩形は省略してます。
---------------------------
破棄する
<Pages>
<Page ID='0' NamuU='ページ - 1'>
<PageSheet>破棄する</PageSheet>
<Shapes>
<!-- 図形 -->
<Shape ID='1' NameU='Box' Name='ボックス' Type='Shape' Master='0'>
<XForm>形状データっぽい</XForm>
<Event>不明</Event>
<Connection IX='0'>コネクタ情報</Connection>
<Connection IX='1'>コネクタ情報</Connection>
・
・
・
<Prop ID='1'>
<Value Unit='STR'>プロパティ</Value>
<Prompt>プロンプト</Prompt>
<Label>ラベル</Label>
省略
</Prop>
<Prop ID='2'>
<Value Unit='STR'>プロパティ</Value>
<Prompt>プロンプト</Prompt>
<Label>ラベル</Label>
省略
</Prop>
・
・
・
</Shape>
<!-- コネクタ -->
<Shape ID='3' Type='Shape' LineStyle='28' FillStyle='28' TextStyle='28'>
<XForm>形状データっぽい(ラインなのに・・・)</XForm>
<!-- 他の形状のどこに線の終端を繋ぐかの情報っぽい。他の図形のコネクタからの相対座標らしい -->
<XForm1D>
<BeginX Unit='MM' F='Par(Pnt(Box!Connections.X5,Box!Connections.Y5))'>2.3622047244094</BeginX>
<BeginY Unit='MM' F='Par(Pnt(Box!Connections.X5,Box!Connections.Y5))'>8.8582677165354</BeginY>
<EndX Unit='MM' F='Par(Pnt(Box.2!Connections.X3,Box.2!Connections.Y3))'>5.1181102362205</EndX>
<EndY Unit='MM' F='Par(Pnt(Box.2!Connections.X3,Box.2!Connections.Y3))'>8.8582677165354</EndY>
</XForm1D>
<Event>不明</Event>
<Prop ID='1'>プロパティなので以下同文</Prop>
<!-- 始点から終点までの途中経路の描画情報っぽい -->
<Geom IX='0'>
<NoFill>1</NoFill>
<NoLine>0</NoLine>
<NoShow>0</NoShow>
<NoSnap>0</NoSnap>
<MoveTo IX='1'>
<X Unit='MM' F='Width*0'>0</X>
<Y>0</Y>
</MoveTo>
<LineTo IX='2'>
<X Unit='MM' F='Width*1'>2.755905511811</X>
<Y>0</Y>
</LineTo>
</Geom>
</Shape>
<Shapes>
<Connects>
<Connect FromSheet='3' FromCell='BeginX' FromPart='9' ToSheet='1' ToCell='Connections.X5' ToPart='104'/>
<Connect FromSheet='3' FromCell='EndX' FromPart='12' ToSheet='2' ToCell='Connections.X3' ToPart='102'/>
</Connects>
</Page>
</Pages>
破棄する
---------------------------
で、具体的にどのように遷移情報をほげほげするかというと、<Shape>タグで図形の存在をオブジェクト化。その中からはプロパティと図形のラベルのみを抽出。そんでもって、コネクタオブジェクトからどの図形とどの図形が接続されているかを抽出。
で、うまくいきそうな気もするけど、階層化されたオブジェクトの取り扱いはどないしよう(^^;
下記XMLはVISIOで2つの矩形とその矩形を結んだ1本のライン(コネクタ)を示している。ちなみに2つめの矩形は省略してます。
---------------------------
破棄する
<Pages>
<Page ID='0' NamuU='ページ - 1'>
<PageSheet>破棄する</PageSheet>
<Shapes>
<!-- 図形 -->
<Shape ID='1' NameU='Box' Name='ボックス' Type='Shape' Master='0'>
<XForm>形状データっぽい</XForm>
<Event>不明</Event>
<Connection IX='0'>コネクタ情報</Connection>
<Connection IX='1'>コネクタ情報</Connection>
・
・
・
<Prop ID='1'>
<Value Unit='STR'>プロパティ</Value>
<Prompt>プロンプト</Prompt>
<Label>ラベル</Label>
省略
</Prop>
<Prop ID='2'>
<Value Unit='STR'>プロパティ</Value>
<Prompt>プロンプト</Prompt>
<Label>ラベル</Label>
省略
</Prop>
・
・
・
</Shape>
<!-- コネクタ -->
<Shape ID='3' Type='Shape' LineStyle='28' FillStyle='28' TextStyle='28'>
<XForm>形状データっぽい(ラインなのに・・・)</XForm>
<!-- 他の形状のどこに線の終端を繋ぐかの情報っぽい。他の図形のコネクタからの相対座標らしい -->
<XForm1D>
<BeginX Unit='MM' F='Par(Pnt(Box!Connections.X5,Box!Connections.Y5))'>2.3622047244094</BeginX>
<BeginY Unit='MM' F='Par(Pnt(Box!Connections.X5,Box!Connections.Y5))'>8.8582677165354</BeginY>
<EndX Unit='MM' F='Par(Pnt(Box.2!Connections.X3,Box.2!Connections.Y3))'>5.1181102362205</EndX>
<EndY Unit='MM' F='Par(Pnt(Box.2!Connections.X3,Box.2!Connections.Y3))'>8.8582677165354</EndY>
</XForm1D>
<Event>不明</Event>
<Prop ID='1'>プロパティなので以下同文</Prop>
<!-- 始点から終点までの途中経路の描画情報っぽい -->
<Geom IX='0'>
<NoFill>1</NoFill>
<NoLine>0</NoLine>
<NoShow>0</NoShow>
<NoSnap>0</NoSnap>
<MoveTo IX='1'>
<X Unit='MM' F='Width*0'>0</X>
<Y>0</Y>
</MoveTo>
<LineTo IX='2'>
<X Unit='MM' F='Width*1'>2.755905511811</X>
<Y>0</Y>
</LineTo>
</Geom>
</Shape>
<Shapes>
<Connects>
<Connect FromSheet='3' FromCell='BeginX' FromPart='9' ToSheet='1' ToCell='Connections.X5' ToPart='104'/>
<Connect FromSheet='3' FromCell='EndX' FromPart='12' ToSheet='2' ToCell='Connections.X3' ToPart='102'/>
</Connects>
</Page>
</Pages>
破棄する
---------------------------
で、具体的にどのように遷移情報をほげほげするかというと、<Shape>タグで図形の存在をオブジェクト化。その中からはプロパティと図形のラベルのみを抽出。そんでもって、コネクタオブジェクトからどの図形とどの図形が接続されているかを抽出。
で、うまくいきそうな気もするけど、階層化されたオブジェクトの取り扱いはどないしよう(^^;
VISIOで吐き出したXML More ログイン