2015-05-29 2 views
2
<channel> 
     <title>test + test</title> 
     <link>http://testprog.test.net/api/test</link> 
     <description>test.com</description> 
     <category>test + test</category> 

     <item xml:base="http://test.com/test.html?id=25> 
      <guid isPermaLink="false">25</guid> 
      <link>http://test.com/link.html</link> 
      <title>title test</title> 
      <description>Description test description test</description> 
      <a10:updated>2015-05-26T10:23:53Z</a10:updated> 
      <enclosure type="" url="http://test.com/test/test.jpg" width="200" height="200"/> 
     </item> 
    </channel> 

Как извлечь атрибут из тега xml с помощью C#?

Я извлек этот тег (название тесты), как это:

title = ds.Tables["item"].Rows[0]["title"] as string; 

как извлечь URL-адрес из атрибута <encosure> тега с C#?

ТНХ

+0

Не могли бы вы уточнить, - как этот код, который вы показали «ds.Tables ...», связан с xml, который вы показали? Это связано с некоторыми «DataTable», а не с xml, я полагаю. –

+0

создать два класса (канал и элемент), добавить соответствующие теги xml членам (атрибуту или элементу) и десериализовать объект –

ответ

0

Первый вариант

Вы можете создавать классы для сопоставления и десериализации XML в объекте и легко получить доступ как свойства.

Второй вариант

Если вы заинтересованы только в нескольких значениях, и вы не хотите создавать классы отображения, вы можете использовать XPath, есть много статей и вопросы anwered, которые вы можете легко найти.

Чтобы извлечь атрибут URL-адрес из тега вы можете использовать путь:

"/channel/item/enclosure/param[@name='url']/@value" 
0

Есть много, много статей, которые помогут вам прочитать XML, но ответ прост, чтобы загрузить XML в документ XML, и просто позвоните

doc.GetElementsByTagName("enclosure") 

Это вернет XmlNodeList со всеми тегами 'enclosure', найденными в вашем документе. Я бы порекомендовал вам некоторое чтение об использовании XML, чтобы убедиться, что ваше приложение является функциональным и надежным.

0

Вы можете использовать LinqToXML, и это будет лучше полезно для вас ...

см код

string xml = @"<channel> 
      <title>test + test</title> 
      <link>http://testprog.test.net/api/test</link> 
      <description>test.com</description> 
      <category>test + test</category> 

      <item xml:base=""http://test.com/test.html?id=25""> 
       <guid isPermaLink=""false"">25</guid> 
       <link>http://test.com/link.html</link> 
       <title>title test</title> 
       <description>Description test description test</description> 
       <a10>2015-05-26T10:23:53Z</a10> 
       <enclosure type="""" url=""http://anupshah.com/test/test.jpg"" width=""200"" height=""200""/> 
      </item> 
     </channel>"; 

     var str = XElement.Parse(xml); 


     var result = (from myConfig in str.Elements("item") 
        select myConfig.Elements("enclosure").Attributes("url").SingleOrDefault()) 
        .First(); 

     Console.WriteLine(result.ToString()); 

Я надеюсь, что это поможет ...