ネストされた繰り返しxmlを使用してデータセットをxml文字列に変換します。その逆も同様です。

ちゃん

以下の例のように、2つのデータテーブルを持つデータセットをネストされた繰り返しxmlを持つxml文字列に変換しようとしています。

以前に経験したことがある場合、何かアドバイスはありますか?

例:

<Items>
  <Code>A001</Code>
  <Qty>3</Qty>
  <SerialNoList>
    <SerialNo>S01</SerialNo>
    <SerialNo>S02</SerialNo>    
    <SerialNo>S03</SerialNo>
  </SerialNoList>
</Items>

データセットをxmlに変換するためにDataRelationを試しましたが、以下の形式しか取得できません。

<Items>
  <Code>A001</Code>
  <Qty>3</Qty>
  <SerialNoList>
    <SerialNo>S01</SerialNo>
  </SerialNoList>
  <SerialNoList>
    <SerialNo>S02</SerialNo>    
  </SerialNoList>
  <SerialNoList>
    <SerialNo>S03</SerialNo>
  </SerialNoList>
</Items>

コード:

    data.Tables[0].TableName = "Items";
    data.Tables[1].TableName = "SerialNoList";

    DataRelation dataRelation = data.Relations.Add("SerialNo", 
    data.Tables[0].Columns["Code"], data.Tables[1].Columns["Code"]);

    dataRelation.Nested = true;
    data.Tables[1].Columns["Code"].ColumnMapping = MappingType.Hidden;

    string xmlString = data.GetXml();

データ:

1st DataTable (Items)
Code     Qty
A001     3

2nd DataTable (SerialNoList)
Code     SerialNo
A001     S01
A001     S02
A001     S03
jdweng

XmlLinqを使用して以下を試してください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
using System.Xml;
using System.Xml.Linq;
using System.Data;

namespace ConsoleApplication106
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            DataSet ds = new DataSet("Code_Serial_No");
            DataTable dtCode = new DataTable("Code");
            ds.Tables.Add(dtCode);

            dtCode.Columns.Add("Code", typeof(string));
            dtCode.Columns.Add("Qty", typeof(int));

            dtCode.Rows.Add(new object[] { "A001", 3});

            DataTable dtSerialNo = new DataTable("Serial_No");
            ds.Tables.Add(dtSerialNo);

            dtSerialNo.Columns.Add("Code", typeof(string));
            dtSerialNo.Columns.Add("SerialNo", typeof(string));

            dtSerialNo.Rows.Add(new object[] { "A001", "S01" });
            dtSerialNo.Rows.Add(new object[] { "A001", "S02" });
            dtSerialNo.Rows.Add(new object[] { "A001", "S03" });

            string xml = "<Items></Items>";
            XDocument doc = XDocument.Parse(xml);
            XElement items = doc.Root;

            items.Add(new XElement("Code", ds.Tables["Code"].Rows[0]["Code"]));
            items.Add(new XElement("Qty", ds.Tables["Code"].Rows[0]["Qty"]));

            XElement list = new XElement("SerialNoList");
            items.Add(list);

            foreach (DataRow row in ds.Tables["Serial_No"].AsEnumerable())
            {
                list.Add(new XElement("SerialNo", row.Field<string>("SerialNo")));
            }

            doc.Save(FILENAME);


        }

    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

javascriptでネストされたforループを使用して、単語の文字列で最も繰り返される文字を返します

分類Dev

XMLを使用して文字列をデータテーブル、リスト、またはより管理しやすいものに変換しますか?

分類Dev

SAS:バイナリで圧縮されたデータセットをcharを使用して圧縮されたデータセットに、またはその逆に変換する最も簡単な方法は何ですか?

分類Dev

ネストされたパンダのデータフレームを列として分解し、その行ごとに親行を繰り返します

分類Dev

Rを使用して、繰り返される子ノードXMLを整然としたデータセットにマージします

分類Dev

データセットのネストされたjson文字列をSparkScalaのデータセット/データフレームに変換します

分類Dev

繰り返される文字列のデータフレーム行を繰り返されないリストに変換します

分類Dev

繰り返される文字列のデータフレーム行を繰り返されないリストに変換します

分類Dev

bashスクリプトは大文字を小文字に変換し、その逆も同様です。

分類Dev

ネストされたハッシュを繰り返して、文字列の配列を取得します

分類Dev

ネストされたjson文字列をフラット化し、sparkscalaを使用してデータフレームに変換します

分類Dev

spark-scala:データフレームを変換して新しい列の性別を生成します。その逆も同様です。

分類Dev

ネストされたデータの抽出でマップを繰り返し使用すると失敗する

分類Dev

Codableを使用して、ネストされたJSONを同様のキーでデコードします

分類Dev

ネストされたノードを持つxmlをAccessにインポートします(そしてxmlをxslで「フラット」構造に変換する必要があります)

分類Dev

ネストされたXMLデータを細断してセットを返す

分類Dev

クメール文字列を使用して文字列をバイトに、またはその逆に変換するにはどうすればよいですか?

分類Dev

ChacraterのセットをASCIIに変換し、SCALAを使用して奇数回繰り返された文字を印刷する方法

分類Dev

トランポリンを使用してネストされた配列からツリーを作成し、それを文字列に変換します

分類Dev

数値(フロートも)を16進数に変換し、その逆も同様です。

分類Dev

xsltを使用したネストされたxmlデータの変換

分類Dev

最初に繰り返されるデータのネストされた文字列配列を作成する最も効率的な方法は何ですか?

分類Dev

一致するテキスト/パラメータに基づいてXMLで繰り返される単語/テキストを変更しますか?

分類Dev

VB.Netでフォームを選択してネストされたコントロールにフォーカスを設定し、その逆も同様です。

分類Dev

テーブルIDで繰り返すことにより、繰り返されるxmlノード値をxml列から#tableに変換します

分類Dev

Python:子で繰り返される親タグを使用してxmlをcsvにフラット化する

分類Dev

マップを使用して複数の変数をループし、ネストされたデータセットで回帰します

分類Dev

XSLTを使用してネストされた属性でXMLを変換する

分類Dev

XSLTを使用したXML変換により、行が繰り返されるテキストファイルが生成されます

Related 関連記事

  1. 1

    javascriptでネストされたforループを使用して、単語の文字列で最も繰り返される文字を返します

  2. 2

    XMLを使用して文字列をデータテーブル、リスト、またはより管理しやすいものに変換しますか?

  3. 3

    SAS:バイナリで圧縮されたデータセットをcharを使用して圧縮されたデータセットに、またはその逆に変換する最も簡単な方法は何ですか?

  4. 4

    ネストされたパンダのデータフレームを列として分解し、その行ごとに親行を繰り返します

  5. 5

    Rを使用して、繰り返される子ノードXMLを整然としたデータセットにマージします

  6. 6

    データセットのネストされたjson文字列をSparkScalaのデータセット/データフレームに変換します

  7. 7

    繰り返される文字列のデータフレーム行を繰り返されないリストに変換します

  8. 8

    繰り返される文字列のデータフレーム行を繰り返されないリストに変換します

  9. 9

    bashスクリプトは大文字を小文字に変換し、その逆も同様です。

  10. 10

    ネストされたハッシュを繰り返して、文字列の配列を取得します

  11. 11

    ネストされたjson文字列をフラット化し、sparkscalaを使用してデータフレームに変換します

  12. 12

    spark-scala:データフレームを変換して新しい列の性別を生成します。その逆も同様です。

  13. 13

    ネストされたデータの抽出でマップを繰り返し使用すると失敗する

  14. 14

    Codableを使用して、ネストされたJSONを同様のキーでデコードします

  15. 15

    ネストされたノードを持つxmlをAccessにインポートします(そしてxmlをxslで「フラット」構造に変換する必要があります)

  16. 16

    ネストされたXMLデータを細断してセットを返す

  17. 17

    クメール文字列を使用して文字列をバイトに、またはその逆に変換するにはどうすればよいですか?

  18. 18

    ChacraterのセットをASCIIに変換し、SCALAを使用して奇数回繰り返された文字を印刷する方法

  19. 19

    トランポリンを使用してネストされた配列からツリーを作成し、それを文字列に変換します

  20. 20

    数値(フロートも)を16進数に変換し、その逆も同様です。

  21. 21

    xsltを使用したネストされたxmlデータの変換

  22. 22

    最初に繰り返されるデータのネストされた文字列配列を作成する最も効率的な方法は何ですか?

  23. 23

    一致するテキスト/パラメータに基づいてXMLで繰り返される単語/テキストを変更しますか?

  24. 24

    VB.Netでフォームを選択してネストされたコントロールにフォーカスを設定し、その逆も同様です。

  25. 25

    テーブルIDで繰り返すことにより、繰り返されるxmlノード値をxml列から#tableに変換します

  26. 26

    Python:子で繰り返される親タグを使用してxmlをcsvにフラット化する

  27. 27

    マップを使用して複数の変数をループし、ネストされたデータセットで回帰します

  28. 28

    XSLTを使用してネストされた属性でXMLを変換する

  29. 29

    XSLTを使用したXML変換により、行が繰り返されるテキストファイルが生成されます

ホットタグ

アーカイブ