從它那裏得到元素我有一個XML文件,如以下:解析XML和使用C#
<host>
<status state="up" reason="arp-response" reason_ttl="0"/>
<address addr="128.208.188.2" addrtype="ipv4"/>
<address addr="00:19:D1:3D:65:85" addrtype="mac" vendor="Intel Corporate"/>
<hostnames>
<hostname name="d0slf4.phys.washington.edu" type="PTR"/>
</hostnames>
<times srtt="1000" rttvar="5000" to="100000"/>
</host>
<host>
<status state="up" reason="arp-response" reason_ttl="0"/>
<address addr="128.208.188.3" addrtype="ipv4"/>
<address addr="3C:94:D5:AC:18:7D" addrtype="mac" vendor="Juniper Networks"/>
<hostnames>
<hostname name="xe-0-3-2--1378.uwar-atg-1.infra.washington.edu" type="PTR"/>
</hostnames>
<times srtt="92000" rttvar="92000" to="460000"/>
</host>
上面的代碼是兩個對象中的一個大文件的樣品。我想要獲取文件中的所有主機,併爲每個主機顯示名稱,ipv4地址和供應商。
我一直在做搜索的最後一個小時,而我已經找到了一些很好的例子,他們都不符合我需要的東西。(對不起,我是新來的XML解析)。
這是我一直在努力的代碼(不完整的,因爲我不知道下一步去哪裏):
string path = ""\\thor\test$\DataSubnetScans\" + _readableSubnet + ".xml";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(path);
XmlNodeList hosts = xmlDoc.GetElementsByTagName("host");
foreach (XmlNode host in hosts)
{
// get elements (FQDN, IPv4, Vendor)
XmlNodeList FQDN = this.GetElementsByTagName("hostname");
}
的代碼foreach循環內的線是錯誤的,這只是一個猜測。正如你在上面看到的,我試圖創建所有元素的列表,然後爲每個元素獲取主機名稱,ipv4地址和供應商。
據我所知,這與閱讀<>標籤之間的文本有點不同,所以我不得不使用類似Attributes["name"].Value
之類的東西。
我不確定在foreach循環中使用XmlNodeList
是否是這樣做的方式,但是因爲每個元素都有2個元素,所以我需要一種方法來單獨選擇它們。這樣做應該讓我選擇索引權?
有人能幫助我指出了正確的方向?
多謝了,請讓我知道如果你需要更多的信息。
對於您在上面給出的XML,什麼是確切的結果應該是什麼樣子的? –
查覈[LINQ到XML](http://msdn.microsoft.com/en-us/library/bb387098.aspx)。 [This bit](http://msdn.microsoft.com/en-us/library/bb387067.aspx)可能特別有用。 – tnw
@MarkCidade 因爲我已經給了XML,我想拉的主機名,IPv4地址,和供應商,並創建列出他們每個主機上 –