質問

次のXDocumentがあります。次のコードでアイテム要素内にアイテム要素を追加しようとしています。

 xdocument.Root.Element("items").add(item)

アイテム要素が見つからないため、これは機能しません。名前空間の問題だと思いますが、これを機能させることはできません。どんな助けも大歓迎です。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://mynamespace.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
                                           <SOAP-ENV:Body>
                                               <ns1:getUpload>
                                                   <itemObj>
                                                       <items SOAP-ENC:arrayType="ns1:item[2]" xsi:type="ns1:ArrayOfItem">
                                                        <!--Item elements to go here-->
                                                       </items>
                                                   </itemObj>
                                               </ns1:getUpload>
                                           </SOAP-ENV:Body>
                                       </SOAP-ENV:Envelope>
役に立ちましたか?

解決

それはあなたがいるからです <items> あなたのルート要素の直接の子ではありません。コンソールアプリにこれを貼り付けることは、何が起こっているのかを示しています。

 var xd = XDocument.Load("xml.xml");

Console.WriteLine(xd.Root.Name); // {http://schemas.xmlsoap.org/soap/envelope/}Envelope
Console.WriteLine(xd.Root.Descendants("items").First().Name ); //items
Console.ReadKey();

Descendants すべての子供(および孫など)を介して、名前付きのアイテムをチェックしてください。 Element 直接の子供だけを見る。

子孫が最初に深さであるか、最初に幅があるかどうかはわかりませんので、巨大な文書のパフォーマンスに注意することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top