2012-03-15 2 views
1

уступи XML структуру:
LINQ Синтаксический XML

<store-fax-info> 
     <store-info store-status="1" store-service-type="2"> 
     <store-guid>blah-blah-blah-blah</store-guid> 
     <store-name>Avacados R Us</store-name> 
     <phone>555-555-5555</phone> 
     <fax>123-456-789</fax> 
     <attention>Rockhead Rumble</attention> 
     </store-info> 
     <selected-clerk> 
     <clerk-info guid="x"> 
      <clerk name="full-name" label="Clerk Name" value="" /> 
     </clerk-info> 
     <item-info> 
      <item-name="item-model" label="Item Model" value="Super Spuds" /> 
      <item-name="item-model-num" label="Model Number value="55555" /> 
      <item-name="family" label="Veggie Family" value="Tuber" /> 
      <item-name="serial-number" label="Serial Number" value="ABC123456A" /> 
      <item-name="date-checked" label="Last Date Checked" value="Mar 15 2012 11:00AM" /> 
      <item-name="item-weight" label="Weight" value="20lbs /> 
     <item-info> 
     </selected-clerk> 
    </store-fax-info> 

я после атрибутов в элемент-инфо узла, а именно последнее значение каждого атрибута. Кикер, мне нужно только 4 из 6 атрибутов. Я весь день колотил этот день. Я беру этот xml и вставляю его в XElement, давайте назовем его информацией. Когда я пишу это:

var query = from i in info.Elements("item-info") 
       from j in i.Elements() 
       select j; 

В этот момент я вижу все шесть строк названия .... Целью я хотел бы получить значения и поместить их в объект класса. Примерно pseudocoded желаемый результат ....

select new MyObject() 
    { 
     Product = query.SuperSpuds, 
     Number = query.55555, 
     SerialNumber = query.ABC123456A, 
     CheckedDate = query.Mar 15 2012 11:00AM, 
    } 

Я не могу массировать запрос LINQ, чтобы делать то, что мне нужно.

+0

XML-недействителен ... что они должны быть ?? '' элемент не имеет имени, просто связка атрибутов !? – joshuahealy

+0

Да, это так. Я должен был упомянуть. Это фрагмент xml, который передается. В конечном итоге он заканчивается слиянием с другими фрагментами. Я просто захватил фрагмент, чтобы получить то, что нужно. – AvacadoRancher

ответ

1

Прежде всего, ваш xml не является корректным.

вещи, как

<item-name="item-model" label="Item Model" value="Super Spuds" />

не допускаются. Если вы хотите сохранить текст внутри элемента используйте:

<item-name label="Item Model" value="Super Spuds">item-model</item-name>

Однако если изменить XML актуальных один следующий код может помочь вам:

var xElements = xElement.Descendants("item-name").Attributes("value").ToList(); 

var o = new MyObject() 
      { 
       Product = xElements[0].Value, 
       Number = xElements[1].Value, 
       SerialNumber = xElements[2].Value, 
       CheckedDate = xElements[3].Value 
      }; 
+0

Это заставило меня идти, спасибо тоннелю. Я рассмотрел проблему xml выше. Протестировал код, и он дает мне то, что мне нужно. – AvacadoRancher

Смежные вопросы