0

ドキュメントにこのXML要素の文字列があります

<dmc><avee><modelic></modelic><sdc></sdc><chapnum></chapnum><section></section>
<subsect></subsect><subject></subject><discode></discode><discodev></discodev>
<incode></incode><incodev></incodev><itemloc></itemloc></avee></dmc>

私がする必要があるのは、Linqを使用してユーザーが入力した変数をこれらの要素に入力することです。私は現在持っています:

XDocument doc = XDocument.Load(sgmlReader);
doc.Element("modelic").Add(MI);
doc.Element("sdc").Add(sd);
doc.Element("chapnum").Add(sys);
doc.Element("section").Add(subsys);
doc.Element("subsect").Add(subsubsys);
doc.Element("subject").Add(unit);
doc.Element("discode").Add(dc);
doc.Element("discodev").Add(dcv);
doc.Element("incode").Add(infcode);
doc.Element("incodev").Add(infCV);
doc.Element("itemloc").Add(loc);

(はい、私はsgmlReaderを使用していますが、これは他の分野の私のプログラムでは正常に機能します)NullReferenceException was unhandled - Object reference not set to an instance of an object

何かアイデア/提案をお願いしますか?

4

2 に答える 2

0

これはうまくいくはずです:

        var avee = dmc.Root.Element("avee");
        avee.Element("modelic").Value = MI;
        avee.Element("sdc").Value = sd;

chapnum残りの要素 ( , section...)ごとに最後の行を繰り返すだけです。

問題は、最初にルート要素 ( dmc) を取得し、次にを取得する必要があり、次にaveeの子要素の値を設定できることでしaveeた。

于 2013-03-06T13:29:36.430 に答える
0

Element()メソッドは、コンテナーの直接の子のみに一致します。

Descendants()First( ) にチェーンすることもできます:

doc.Descendants("modelic").First().Add(MI);

または、変更する要素の直接の親に移動します。

doc.Root.Element("avee").Element("modelic").Add(MI);
于 2013-03-06T13:30:05.013 に答える