1

C# を使用した Xml ジェネレーターで大きな問題が発生しました。要素の名前を含む親ノードを追加する方法が見つかりませんでした。

情報はデータベースから取得され、メモリ内の Xml ドキュメントに挿入されます。一部のノードを変換する必要があるため、これらのノードを名前で取得する必要があります。

コード:

XmlElement xe = xd.CreateElement("xe");

foreach (XmlNode node in xd.DocumentElement.ChildNodes)
{
    XmlNode imported = xd.ImportNode(node, true);
    xe.AppendChild(imported["a"]);
    xe.AppendChild(imported["b"]);
    xe.AppendChild(imported["c"]);
    xe.AppendChild(imported["d"]);
}

結果:

<node>
    <a>1</a>
    <b>2</b>
    <c>3</c>
    <d>4</d>
    <a>1</a>
    <b>2</b>
    <c>3</c>
    <d>4</d>
    <a>1</a>
    <b>2</b>
    <c>3</c>
    <d>4</d>
</node>

必要なもの:

<node>
    <ex>
        <a>1</a>
        <b>2</b>
        <c>3</c>
        <d>4</d>
    </ex>
    <ex>
        <a>1</a>
        <b>2</b>
        <c>3</c>
        <d>4</d>
    </ex>
    <ex>
        <a>1</a>
        <b>2</b>
        <c>3</c>
        <d>4</d>
    </ex>
</node>
4

2 に答える 2

3

子を「ex」という名前の要素に追加し、その要素をルートに追加します

    foreach (XmlNode node in xd.DocumentElement.ChildNodes)
    {
        XmlNode imported = xd.ImportNode(node, true);
        XmlElement ex = xd.CreateElement("ex");
        ex.AppendChild(imported["a"]);
        ex.AppendChild(imported["b"]);
        ex.AppendChild(imported["c"]);
        ex.AppendChild(imported["d"]);
        xd.AppendChild(ex);
    }
于 2012-09-28T12:42:06.703 に答える
1

このコードを使用できます

    XmlElement xe = xd.CreateElement("xe");

    foreach (XmlNode node in xd.DocumentElement.ChildNodes)
    {
        XmlNode imported = xd.ImportNode(node, true);

        XmlElement child = xd.CreateElement("ex");

        child.AppendChild(imported["a"]);
        child.AppendChild(imported["b"]);
        child.AppendChild(imported["c"]);
        child.AppendChild(imported["d"]);

        xe.AppendChild(child); 

    }
于 2012-09-28T12:44:55.843 に答える