سؤال

ولدي سيناريو مماثل لهذا واحد:

public class TestLinq2Xml
{
  private XElement GenerateSomeXml()
  {
     return XElement.Parse(@"<MyObject>
                                <Properties>
                                   <Name>My object 1</Name>
                                   <Position>0; 0; 0</Position>
                                </Properties>
                             </MyObject>");
  }

public void ExploreXmlNode()
{
  var xmlTree = this.GenerateSomeXml();

  var name = xmlTree.Element("MyObject").Element("Properties").Element("Name").Value;

  Console.WriteLine(name);
}

و}

وطيب، وهذا هو مبسط جدا. .... لكنه لا يزال متعود العمل. أي أفكار بشأن ما أفعله خطأ هنا؟

وتحرير:

وأوه، نسيت تقريبا. والمشكلة هي أن xmlTree.Element("MyObject") بإرجاع تسلسل LINQ فارغة. على الرغم من انني بوضوح وعقدة اسمها "MyObject".

هل كانت مفيدة؟

المحلول

ووXElement.Parse بإرجاع XElement التي هي العقدة <MyObject>. جرب: -

واسم فار = xmlTree.Element ( "خصائص") العنصر ( "الاسم") القيمة؛.

نصائح أخرى

وإلى جانب ما اقترح ملصق السابقة، يمكنك أيضا إرجاع XDocument من GenerateSomeXml الخاص بك () وظيفة بحيث يعمل LINQ الخاص بك.

        private static XDocument GenerateSomeXml()
    {
        return XDocument.Parse(@"<MyObject>
                            <Properties>
                               <Name>My object 1</Name>
                               <Position>0; 0; 0</Position>
                            </Properties>
                         </MyObject>");
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top