[英]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.