簡體   English   中英

NodeList到列表框顯示

[英]NodeList to list box display

我目前在使用以下代碼將xmlnodelist的結果放入普通列表框中時遇到問題。

var xmlDoc = new XmlDocument();
xmlDoc.Load(textBox1.Text);

var node = xmlDoc.SelectNodes("pdml/packet/proto/field[@name='ip.src']/@show");
list.Items.Add(node);

據我了解,SelectNodes會將具有該XPath名稱的所有節點放入列表中。 當我將它們添加到標准列表框中時,將顯示以下內容:

System.Xml.XPathNodeList

作為參考,這個特定的xml看起來是這樣的(它是一個更大的部分的一部分):

 <pdml>
 <packet>
 <proto>
 <field name="ip.src" showname="Source: 192.168.1.204 (192.168.1.204)" size="4" pos="26" show="192.168.1.204" value="c0a801cc"/>
 </proto>
 </packet>
 </pdml>

如何將其轉換為NodeList中包含的內容?

進一步的幫助:另外我該如何處理NodeList中包含的數據? 例如,我可以將其設置為唯一標識符並為其分配其他節點數據。

謝謝湯姆

我認為這是選項,但您必須創建列表“節目”:

XDocument xDoc = XDocument.Load("your xml file");
foreach (var elem in xDoc.Document.Descendants("field[@name='ip.src']"))
{
    shows.Add(elem.Attribute("show").Value);
}

您必須將每個項目而不是集合添加為列表中的一個項目。 由於列表只有XmlNodeList類型的一項,因此在此對象上調用ToString並將其生成為System.Xml.XPathNodeList消息。 您應該使用list.Items.AddRange如果存在)(不清楚您使用的是哪個UI框架),或者應該迭代XmlNodeList集合:

var xmlDoc = new XmlDocument();
xmlDoc.Load(textBox1.Text);

var nodes = xmlDoc.SelectNodes("pdml/packet/proto/field[@name='ip.src']/@show");
foreach(var node in nodes)
    list.Items.Add(node);

node包含XmlAttribute集合。 我相信您打算將每個屬性的Value添加到list.Items

foreach (XmlAttribute attribute in node)
{
    list.Items.Add(attribute.Value);
}

或可能使用AddRange()方法和LINQ一次添加所有屬性值:

list.Items.AddRange(from XmlAttribute attribute in node select attribute.Value);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM