2014-01-17 2 views
2

У меня есть XML-документ, который я пытаюсь проанализировать. Вот то, что она выглядит как (только формат здесь, нет данных):Определение элемента в XDocument

<objectdata> 
    <title></title> 
    <assignableunit>  
     <other></other>  
     <other></other>  
     <text></text>  
     <name></name> 
    </assignableunit>  
</objectdata> 

То, что я планировал делать было перебрать документа XML и действуют на каждом элементе. Например, если элемент равен <assignableunit>, я бы назвал код, чтобы действовать на этот конкретный элемент. Если элемент равен <text>, я бы назвал код, чтобы действовать по этому поводу.

var xdoc = XDocument.Load("Items.xml"); 
foreach (XElement element in xdoc.Descendants("objectdata")) 
{ 
    //if element is <assignableunit>... 
    //if element is <other>... 
    //if element is <name>... 
    //etc... 
} 

Я думал, что, может быть, с помощью переключателя/случай, чтобы определить тип элемента будет работать, но я не могу понять, как определить тип элемента. Может ли кто-нибудь предложить точку в правильном направлении? Я вообще не имел дело с XML-файлами.

ответ

1

Поскольку вы используете XElement вместо XmlNode или XmlElement который много учебных пособий/примеры использования, вам нужно использовать Name имущество, которое является объектом XName. Объекты без линков разбиты на отдельные свойства, такие как Name и LocalName, в то время как XElement объединяет их с использованием типа XName.

if (element.Name.LocalName == "title") 
{ 
    // Do something with title data 
} 
else if (element.Name.LocalName == "assignableunit") 
{ 
    // Do something with assignableunit data 
    foreach(XElement childElement in element.Descendents()) 
    { 
     if (childElement.Name.LocalName == "other") 
     { 

     } 
     else if (........) 
     { 
     } 
    } 
} 
Смежные вопросы