C# 将带有属性的xml读入treeview
我一直在尝试将XML读入treeView(大部分都成功了),但有一个问题:当标记具有属性时,它们不会被读取,树视图会得到一个只包含XML标记名称但不包含其属性的节点:这是我的XMLC# 将带有属性的xml读入treeview,c#,xml,treeview,C#,Xml,Treeview,我一直在尝试将XML读入treeView(大部分都成功了),但有一个问题:当标记具有属性时,它们不会被读取,树视图会得到一个只包含XML标记名称但不包含其属性的节点:这是我的XML <?xml version="1.0" encoding="utf-8"?> <skiu:ikunk xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <economicalOperator> &l
<?xml version="1.0" encoding="utf-8"?>
<skiu:ikunk xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<economicalOperator>
<id>BGNCA00003003</id>
</economicalOperator>
<ikunk id="1">
<number>4</number>
<name>КИНГС ТАБАКО ИНТЕРНЕШЪНЪЛ ЕАД</name>
<certProvider>BTRUST</certProvider>
<certAuthSn>10221954</certAuthSn>
<certPin>5244</certPin>
<description>Кингс Табако BGNCA00003003</description>
</ikunk>
<controllers>
<number>1</number>
<name>PLC</name>
<description>FatekPLC</description>
<templateCode>1</templateCode>
</controllers>
<tags>
<templateEntryCode>T_TN</templateEntryCode>
<name>Пореден номер на транзакцията</name>
</tags>
</skiu_x003A_ikunk>
以及AddNode的代码:
private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
{
XmlNode xNode;
TreeNode tNode;
XmlNodeList nodeList;
int i = 0;
if (inXmlNode.HasChildNodes)
{
nodeList = inXmlNode.ChildNodes;
for (i = 0; i <= nodeList.Count - 1; i++)
{
xNode = inXmlNode.ChildNodes[i];
inTreeNode.Nodes.Add(new TreeNode(xNode.Name));
tNode = inTreeNode.Nodes[i];
AddNode(xNode, tNode);
}
}
else
{
inTreeNode.Text = inXmlNode.InnerText.ToString();
}
}
private void AddNode(XmlNode中的XmlNode,TreeNode中的TreeNode)
{
xmlnodexnode;
三烯醇化物;
XmlNodeList节点列表;
int i=0;
if(inXmlNode.HasChildNodes)
{
nodeList=inXmlNode.ChildNodes;
for(i=0;iXmlNode有一个需要处理的属性集合。XmlNode的子节点只是其中的XmlNodes
尝试类似这样的操作以添加属性作为树节点
if (inXmlNode.Attributes.Any()) {
foreach (XmlAttribute attribute in inXmlNode.Attributes) {
String displayName = String.Format("({0})", attribute.Name)
inTreeNode.Nodes.Add(new TreeNode(displayName));
}
}
希望这有帮助!:)看看
您将看到属性存储在Attributes属性中,而不是ChildNodes属性中,因此如果您也检查此集合,您应该解决您的问题您是否仍然存在此问题?您是否可以标记接受的答案?:)
if (inXmlNode.Attributes.Any()) {
foreach (XmlAttribute attribute in inXmlNode.Attributes) {
String displayName = String.Format("({0})", attribute.Name)
inTreeNode.Nodes.Add(new TreeNode(displayName));
}
}