Question

Je l'XDocument suivante, je suis en train d'ajouter des éléments de l'élément dans l'élément éléments avec le code suivant:

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

Cela ne fonctionne pas comme l'élément des éléments ne peut être trouvé. Je pense qu'il est un problème avec les espaces de noms, mais je ne peux pas sembler obtenir ce travail. Toute aide sera très appréciée.

<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>
Était-ce utile?

La solution

Il est parce que vous n'est pas <items> l'enfant direct de votre élément racine. Tirer cela dans une application console montre ce qui se passe:

 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();

vérifie Descendants par tous les enfants (et petits-enfants, etc.) pour l'élément nommé, Element ne regarde que les enfants directs.

Je ne sais pas si le Descendants est d'abord la profondeur ou en largeur d'abord, vous voudrez peut-être prudent sur les performances des documents énormes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top