-1

このようなXMLファイルを取得しました。

Parent
-Value
-Value
-Child
--Value
--Value
---Grandchild
----Value
---GrandchildEND
-ChildEND
-Value
-Child2
......

XMLファイルの構造は可変です。各XMLに異なる子、孫などがあることを意味します。XMLファイルを開き、XMLファイルからMYSQLデータベースにデータを入力したいと思います。

ここでは、XMLを開いてMySQLに情報を入力するために使用するコードを示します。

                while (hardcore < 50000)
            {
                try
                {
                    XDocument xmlDoc2 = XDocument.Load("c:\\a.xml");
                    var simpleQuery2 = (from Mainparent in xmlDoc2.Descendants("Mainparent")
                                        select Mainparent).FirstOrDefault();
                    dbcon.Insert
                        (
                        simpleQuery2.Element("id").Value,
                        simpleQuery2.Element("action").Value,
                        simpleQuery2.Element("ordernr").Value,
                        simpleQuery2.Element("typ").Value,
                        simpleQuery2.Element("orderdate").Value,
                        simpleQuery2.Element("p4code").Value,
                        simpleQuery2.Element("runtime").Value,
                        );
                }
                catch (NullReferenceException)
                {
                    textBox1.Text = "did a stupid mistake mofo";
                }
                hardcore++;
            }

「simpleQuery2.Element( "id")。Value」からの情報は、MainParentに格納されている値です。

私の問題は今です:

どのvalues/children /grandchilds..がXMLファイル内にあるかわかりません。したがって、MySQLに正常にインポートするには、すべての要素を1つずつインポートする必要があります。そうしないと、エラーが発生し、インポートが機能しません。

親/値名/値または親/子/値名/値を知る必要があります。これは、Parent / Valuename / Valueがテーブル「PARENT」にインポートされ、Parent / Child / Valuename/valueがテーブル「CHILD」にインポートされるためです。

どの子/孫が何であるかを知っている場合、私はどのような価値を期待するかを知っています。

私はすでに要素の完全なリストを次のように取得できます:

            XDocument xmlDoc2 = XDocument.Load("c:\\a.xml");
        foreach (var name in xmlDoc2.Root.DescendantNodes().OfType<XElement>()
                .Select(x => x.Name).Distinct())
        { textBox1.Text = textBox1.Text + "\r\n"+name; }
4

2 に答える 2

1

あなたの質問はまだ少し曖昧です。まだ少し曖昧だと思うのは、各XMLが異なると言っているからですが、それが親/子/...フローにどのように関係しているかはわかりません。

var nodeNames = XDoucment.root.Descendants()
                              .Select(e => e.Name.Localname)
                              .Distinct()
                              .ToList() 

このコードは、XMLファイル内のすべての個別のノード名のリストを提供します。

私は c#`を使用してxmlファイルから動的要素を読み取るというタイトルの同様の質問に答えました

于 2012-05-15T17:39:52.253 に答える
0

すべての XML ノードを取得するには、次のようにします。

XmlDocument xml_doc = new XmlDocument(); 
xml_doc.Load(something);
XmlNodeList list = xml_doc.SelectNodes("//*");

さらに何かが必要な場合は、XPath 式を変更するだけです :)。

于 2012-05-14T20:21:33.240 に答える