2013-03-14 2 views
0

Ниже приведен код, я использую, чтобы получить значение «имя» (атрибут) от «человека»не в состоянии получить элемент с XDocument

параметр тега = «человек» и атрибут = параметр» название»

public static string GetInformationFromXML(string tag, 
              string attribute, 
              string filePath) 
{ 
     XDocument doc = XDocument.Load(filePath); 
     string info = doc.Element(tag).Attribute(attribute).Value; 

     return info; 
} 

doc.Element (тег) не получает элемент, хотя, когда я развернуть документ, он имеет элемент с типом„Element“и имя„человека“ файл считывается в XmlDocument для ваша информация.

ниже XML-файла я пытаюсь читать

<?xml version="1.0"?> 
<import> 
    <company name1="ABC" name2="" action="create" 
      profile="\Profiles\ABC\" id="C1"> 
    <address street="industrial" city="london" 
      country="england" id="A1"> 
     <telecom type="phone" value="4839282992" 
       desc="" default="true" /> 
     <telecom type="fax" value="3232" desc="" /> 
    </address> 
    </company> 
    <person title="Mr." name="Tariq" surname="sheikh" 
      lang="EN" action="create" profile="Profiles\Tariq" 
      login="tariq" password="123456" default_address="A1"> 
    <link reference="C1" type="Employee" description="Software developer" /> 
    <address street="baker street" zip="12443" 
      city="london" country="england" /> 
    <account bank="Barclays" account="4378734834" /> 
    <telecom type="email" value="[email protected]" desc="" /> 
    <registration type="temporaryID" 
        value="4623648c-739e-49c8-93fa-41dc7fed53ea" /> 
    </person> 
</import> 

Я новичок в XDocument!

ответ

0

Вы должны использовать Descendants, когда элемент, который вы ищете, не является прямым дочерним элементом текущего элемента (или корень для XDocument).

string info = doc.Descendants(tag).First().Attribute(attribute).Value; 
+0

Большое спасибо, я хочу подтвердить, что в случае, если я должен пойти внутри вложенных тегов на любом уровне, я полагаю, я должен буду всегда делать, как этого doc.Descendents (а) .Descendents (б). ... скоро – tariq