2009-12-28 119 views
0

如何从下面的xml文件中获取ArrayList或List的名称,ID和描述的值和值?VB.NET - 解析XML

我真的不明白在VB.NET中如何处理基于javascript中的逻辑的elimenter。

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 


<Document> 
<TrackList> 
    <plist> 
    <array> 

    <dict> 
    <key>Name</key><string>Michael Jackson</string> 
    <key>ID</key><integer>22</integer> 
    <key>description</key><string>Some text</string> 
    </dict> 

    <dict> 
    <key>Name</key><string>Pink Floyd</string> 
    <key>ID</key><integer>52</integer> 
    <key>description</key><string>Some text</string> 
    </dict> 
    <array> 

    </plist> 
</TrackList> 
</Document> 
+1

什么版本的VB/.NET的? – 2009-12-28 16:12:26

+0

.NET框架4 – sv88erik 2009-12-28 16:14:17

回答

1

如果您使用的是VB,那么您可以使用一些内置的构造来简化查询。我构建了一个返回匿名类的小应用程序。现在假设结构保持不变,所以字典总是有六个元素。

Dim XML = <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
       <Document> 
        <TrackList> 
         <plist> 
          <array> 
           <dict> 
            <key>Name</key> 
            <string>Michael Jackson</string> 
            <key>ID</key> 
            <integer>22</integer> 
            <key>description</key> 
            <string>Some text</string> 
           </dict> 
           <dict> 
            <key>Name</key><string>Pink Floyd</string> 
            <key>ID</key><integer>52</integer> 
            <key>description</key><string>Some text</string> 
           </dict> 
          </array> 
         </plist> 
        </TrackList> 
       </Document> 

    Dim Elements = From xmlelement In XML...<dict> _ 
        Select Name = xmlelement.Elements.ElementAt(1).Value, _ 
        ID = xmlelement.Elements.ElementAt(3).Value, _ 
        Description = xmlelement.Elements.ElementAt(5).Value 

另一种方法是得到了字典元素的子元素。然后,您可以通过它们来构建键/值对。

Dim Elements = From xmlelement In XML...<dict> _ 
        Select xmlelement.Elements.tolist() 

HTH

1

您可以使用XLINQ,像这样:

Dim xdoc = XDocument.Load(...) 
Dim dicts = xdoc...<dict>.Select(Function(dict) dict.Elements()) 

这会给你XElements的嵌套的IEnumerable。

+0

但是,在查找字典之前,您已经足够使用tracklist和plist了。因为,如果标签字典没有TrackList,或者如果在dict里面有dict elimenter,那又怎样呢? – sv88erik 2009-12-28 16:28:35

+0

你在说什么? – SLaks 2009-12-28 16:34:24

+0

那么,“字典”有什么儿童或父母有相同的标签(字典)。 但无论如何,感谢您的回复! +1 – sv88erik 2009-12-28 16:52:56