Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将带有属性的xml读入treeview_C#_Xml_Treeview - Fatal编程技术网

C# 将带有属性的xml读入treeview

C# 将带有属性的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读入treeView(大部分都成功了),但有一个问题:当标记具有属性时,它们不会被读取,树视图会得到一个只包含XML标记名称但不包含其属性的节点:这是我的XML

<?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));
    }
}