2013-02-15 44 views
-2

如何拉從XML文件中的數據在C#中的列表視圖,獲取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在列表視圖網格地址標籤內的所有列表和列表視圖的每一行中相應地顯示它..

名單應該是這樣.. 地址ADDRTYPE 192.168.1.45的IPv4 192.164.4.56的IPv4

等。

請幫我在此先感謝..

+0

什麼都嘗試過你這將讓你所有的地址?這意味着:顯示你到目前爲止的代碼。 – 2013-02-15 08:35:25

+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); 。 VAR addrs的= x.Descendants()元素( 「地址」) 。選擇(Y => { ListViewItem的ITEM1 =新的ListViewItem(y.Attribute( 「地址」)值); item1.SubItems.Add (y.Attribute(「addrtype」)。Value); return item1; }); ListViewItem.Items.AddRange(addrs的);' [主要]我已經錯誤,說明THA的ListView - 多年平均值存在於當前上下文 – Gifted 2013-02-15 12:50:49

回答

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

嘿它是投擲兩個例外 第一 - x是不列入在當前上下文中存在.. 第二個 - listView在當前上下文中不存在.. – Gifted 2013-02-15 11:46:37

+0

大聲笑。只是改變x的xdoc和列表視圖不存在,這是真的,那必須是你的列表視圖,這是一個片段,而不是一個真正的工作代碼....大聲笑 – jjchiw 2013-02-15 13:49:23

+0

仍然我被困在哪裏listView是拋出一個錯誤,指出 - 「listView doesn在當前的情況下不存在..「 **請幫助我.. ** – Gifted 2013-02-16 07:21:30

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) 

與列表視圖控件綁定您的數據。 我希望這會幫助你。