0

ここに私のXMLがあります:

  <notebooks>
    <notebook>
      <is-default type="boolean">true</is-default>
      <name>James's notebook</name>
      <id>MS4zfDEvMS9Ob3RlYm9va3wzLjM=</id>
    </notebook>
    <notebook>
      <is-default type="boolean">false</is-default>
      <name>James alternate notebook</name>
      <id>NDQuMnwzNC8zNC9Ob3RlYm9va3wxMTIuMg==</id>
    </notebook>
    <notebook>
      <is-default type="boolean">false</is-default>
      <name>Notebook for James lab</name>
      <id>NTMuM3w0MS80MS9Ob3RlYm9va3wxMzUuMw==</id>
    </notebook>
  </notebooks>

ここで見つけた標準の DataSet ロードを実行しています。

    DataSet ds = new DataSet();
    ds.ReadXml(new StringReader(lcXMLSegment));

「ノートブック」テーブルが「名前」と「ID」の列だけで終わることを除けば、問題なく動作します。各要素から type="boolean" を削除しない限り、列「is-default」は表示されません。

ReadXml() を実行する前に DataTable スキーマを作成しようとしましたが、DataSet.ReadXml() がデータ セット内のテーブルを再作成すると想定しているため、何もしません。また、 ReadXml() でさまざまな2番目のパラメーターを試して、スキーマを読み取ったり推測したりしましたが、違いはありません(またはエラーがスローされます)。

この XML は、アクセスしてカスタム プログラミングを実行したい Web API から返されるものであるため、XML のネイティブ構造を制御することはできません。「is-default」フィールドがブール型として取り込まれなくても問題ありません。文字列型のすべてのデータを処理できるからです。また、XML からロードしたデータの完全なスキーマを作成することも問題ありませんが、この場合、どこでどのようにそれを行うのかわかりません。

4

2 に答える 2