2013-02-15 4 views
-2

Как вытащить данные из XML-файла в виде списка в C#, получить данные внутри тегов в XML-документ ..извлечения данных из XML-файла в виде списка в C#

У меня есть XML-файл, как это ..

<?xml version="1.0"?> 
<?xml-stylesheet href="file:///C:/Program Files (x86)/Nmap/nmap.xsl" type="text/xsl"?> 
<!-- Nmap 6.25 scan initiated Fri Feb 15 13:34:46 2013 as: nmap -T4 -A -v -oX - 10.100.95.0 10.100.95.255 --> 
<nmaprun scanner="nmap" args="nmap -T4 -A -v -oX - 10.100.95.0 10.100.95.255" start="1360915486" startstr="Fri Feb 15 13:34:46 2013" version="6.25" xmloutputversion="1.04"> 
<scaninfo type="syn" protocol="tcp" numservices="1000" services=""/> 
<verbose level="1"/> 
<debugging level="0"/> 
<taskbegin task="ARP Ping Scan" time="1360915488"/> 
<taskend task="ARP Ping Scan" time="1360915489" extrainfo="2 total hosts"/> 
<host><status state="down" reason="no-response" reason_ttl="0"/> 
<address addr="10.100.95.0" addrtype="ipv4"/> 
</host> 
<host><status state="down" reason="no-response" reason_ttl="0"/> 
<address addr="10.100.95.255" addrtype="ipv4"/> 
</host> 
<runstats><finished time="1360915489" timestr="Fri Feb 15 13:34:49 2013" elapsed="3.16" summary="Nmap done at Fri Feb 15 13:34:49 2013; 2 IP addresses (0 hosts up) scanned in 3.16 seconds" exit="success"/><hosts up="0" down="2" total="2"/> 
</runstats> 
</nmaprun> 

и я хочу, чтобы извлечь весь перечень адр адреса и AddrType внутри тега адреса в список просмотра сетки и отображать его соответствующим образом в каждой строке в виде списка ..

список должен быть, как это .. Addr AddrType 192.168.1.45 ipv4 192.164.4.56 ipv4

и т.д ..

пожалуйста, помогите мне спасибо заранее ..

+0

Что ваш пробовали? Это означает: покажите код, который у вас есть. –

+0

Показать некоторые из ваших усилий – 2013-02-15 08:35:56

+0

'String xpath = path +" /NGS_Net_Scanner/IP_Range_Scan13.34.43_.xml "; var xdoc = XDocument.Load (xpath); . вар addrs = x.Descendants() Элементы ("адрес") .Select (у => { ListViewItem элемент1 = новый ListViewItem (y.Attribute ("ADDR") Значение);. item1.SubItems.Add (y.Attribute ("addrtype"). Значение); return item1; }); ListViewItem.Items.AddRange (addrs); ' [главная] я ошибка о том, тха ListView - оленья кожа существует в текущем контексте – Gifted

ответ

0
var xdoc = XDocument.Load(@"c:\temp\arg\s.xml"); 
var addrs = xdoc.Descendants().Elements("address") 
       .Select(y => new { 
           Name = y.Attribute("addr").Value, 
           Value = y.Attribute("addrtype").Value 
           }); 

Это поможет вам все адреса, как вы хотите

foreach(var addr in addrs) 
{ 
    ListViewItem item1 = new ListViewItem(addr.Name); 
    item1.SubItems.Add(addr.Value); 
    //We have a ListView named listview 
    listview.Items.Add(item1); 
} 

или мы можем сделать это проще, как это

var addrs = xdoc.Descendants().Elements("address") 
        .Select(y => { 
            ListViewItem item1 = new ListViewItem(y.Attribute("addr").Value); 
            item1.SubItems.Add(y.Attribute("addrtype").Value); 
            return item1; 
           }); 

listView.Items.AddRange(addrs); 
+0

Эй, это бросает два исключения первого х является оленья кожа существует в текущем контексте .. Второй - listView не существует в текущем контексте. – Gifted

+0

lol. просто изменилось x для xdoc и listview не существует, это правда, это должен быть ваш список, это фрагмент, а не настоящий рабочий код .... lol – jjchiw

+0

все еще я застрял, когда listView выдает ошибку, указав, что - "listView doesn 't существует в текущем контексте .. " ** пожалуйста, помогите мне .. ** – Gifted

1

ответ 1.- Используйте linq для XML и собирайте данные в списке или коллекции, после чего вы можете привязывать данные к элементу управления списком.

ответ 2.- Использовать набор данных

Dim xmlDatapath As String = "yourxml file path\111.xml" 

    Dim xmlData As String = File.ReadAllText(xmlDatapath) 
    Dim stream As StringReader = New StringReader(xmlData) 
    Dim reader As XmlTextReader = New XmlTextReader(stream) 
    Dim xmlDS As New DataSet() 
    xmlDS.ReadXml(reader) 

и связать данные с контролем представления списка. Надеюсь, это поможет вам.

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