2016-08-17 4 views
0

У меня есть следующий XML, который я беру из указанного URL:Как получить значение атрибута из элемента xml?

<gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref"> 
    <gesmes:subject>...</gesmes:subject> 
    <gesmes:Sender>...</gesmes:Sender> 
    <Cube> 
     <Cube time="2016-08-16"> 
      <Cube value="1" /> 
      <Cube value="2"/> 
      <Cube value="3"/> 
     </Cube> 
    </Cube> 
</gesmes:Envelope> 

Из этого файла мне нужно только принять значение времени «2016-08-16» с помощью Visual Basic код.

ответ

1

Try XML LINQ

Imports System.Xml 
Imports System.Xml.Linq 
Module Module1 
    Const FILENAME As String = "c:\temp\test.xml" 
    Sub Main() 
     Dim doc As XDocument = XDocument.Load(FILENAME) 
     Dim _date As DateTime = CType(doc.Descendants().Where(Function(x) (x.Name.LocalName = "Cube") And (Not x.Attribute("time") Is Nothing)).Select(Function(x) x.Attribute("time")).FirstOrDefault(), DateTime) 
    End Sub 

End Module 
1

Добавить этот импорт:

Imports <xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01"> 
Imports <xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref"> 

Затем загрузите ваши данные, однако вы хотите в XDocument или XElement

Dim xmlDoc = XDocument.Load("myxml.xml") 

Запрос это следующим образом. (если вы используете XElement, не включайте Root).

Dim time = xmlDoc.Root.<Cube>.<Cube>[email protected] 
+0

Если вы используете 'XDocument' вы должны получить доступ к' свойство Root' первый (и я не уверен, что 'Load' будет работать без декларации XML на образце). OTOH вы можете использовать 'XElement' вместо – Sehnsucht

+0

Спасибо @Sehnsucht Я добавил отсутствующий корень. Я разработал его с помощью XElement, а затем получил доступ к ярлыку. – FloatingKiwi

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