XdocumentにXelementを追加します
-
29-09-2019 - |
質問
次の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
直接の子供だけを見る。
子孫が最初に深さであるか、最初に幅があるかどうかはわかりませんので、巨大な文書のパフォーマンスに注意することをお勧めします。
所属していません StackOverflow