- PR -

XML を DataSet に読み込む

1
投稿者投稿内容
未記入
会議室デビュー日: 2004/08/31
投稿数: 12
投稿日時: 2007-02-08 11:14
参考元URLのコードを利用して、XMLの内容をDataSetに読み込ませようとしたのですが、
上手くいきません。
下記のようなXML、XSDを利用しているのですが、
Level3bとLevel4の対応が取得できません。
(Level4テーブルのLevel3b_Idの値がセットされない)
XSDの定義が悪いのでしょうか?
Level3aとLevel3bは下階層が同じ構造です。

コード:
XML::
<?xml version="1.0" encoding="Shift_JIS"?>
<Level1>
  <Level2 id="value1" />
  <Level2 id="value2" >
    <Level3a>
      <Level4 id="value3" />
      <Level4 id="value4">
         <Level5 name="value5"/>
      </Level4>
    </Level3a>
    <Level3b>
      <Level4 id="value6" />
      <Level4 id="value7">
         <Level5 name="value8"/>
      </Level4>
    </Level3b>
  </Level2>
</Level1>

XSD::
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xsd:element name="Level1">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="Level2" type="level2Type" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

<xsd:complexType name="level2Type">
  <xsd:sequence>
    <xsd:element name="Level3a" >
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="Level4" type="level4Type" minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>
    <xsd:element name="Level3b" >
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="Level4" type="level4Type" minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>
  </xsd:sequence>
  <xsd:attribute name="id" type="xsd:string" use="required" />
</xsd:complexType>

<xsd:complexType name="level4Type">
  <xsd:sequence>
    <xsd:element name="Level5" type="level5Type" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
  <xsd:attribute name="id" type="xsd:string" use="required" />
</xsd:complexType>

<xsd:complexType name="level5Type">
  <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>

</xsd:schema> 

結果抜粋::
テーブル名 = Level4
---------
列 ...
id           Level4_Id    Level3a_Id   Level3b_Id   
行数 = 4
行 ...
value3       0            0                         
value4       1            0                         
value6       2                                      
value7       3                                      


1

スキルアップ/キャリアアップ(JOB@IT)