【发布时间】:2015-05-11 17:54:45
【问题描述】:
我一直在尝试将 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>
当我将它读入树视图时,除了每个标签的属性之外,我几乎得到了预期的所有内容!
我的问题是如何使属性显示在它们各自的节点中,但使用括号 (),如下所示:第 n 个节点文本(第 n 个属性文本)
这是我对代码的阅读:
XmlDataDocument xmldoc = new XmlDataDocument();
XmlNode xmlnode;
FileStream fs = new FileStream(ofdXML.FileName, FileMode.Open, FileAccess.Read);
xmldoc.Load(fs);
xmlnode = xmldoc.ChildNodes[1];
treeView1.Nodes.Clear();
treeView1.Nodes.Add(new TreeNode(xmldoc.DocumentElement.Name));
TreeNode tNode;
tNode = treeView1.Nodes[0];
AddNode(xmlnode, tNode);
以及 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();
}
}
任何帮助将不胜感激:)
【问题讨论】:
-
您还有这个问题吗?你能标记一个接受的答案吗? :)