如何将数据从xml文件提取到c#中的列表视图,获取xml文档标记内的数据..
我有一个像这样的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>
我想在列表视图网格中的地址标记内提取 addr 地址和 addrtype 的所有列表,并在列表视图的每一行中相应地显示它..
列表应该是这样的.. Addr Addrtype 192.168.1.45 ipv4 192.164.4.56 ipv4
等。
请提前帮助我...
答案 0 :(得分:1)
回答1.-使用linq to 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)
并使用列表视图控件绑定您的数据。 我希望这会对你有所帮助。
答案 1 :(得分: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);