【发布时间】:2015-07-09 20:50:55
【问题描述】:
我尝试将我的 XML 文件加载到树视图中,但我没有这样做。只有我得到元素名称。我希望我的树视图加载带有 XML 属性。我的问题是如何获取 XML 属性来加载我的树视图?
亲切的问候,
主窗体 这是我初始化 XML 文件的表单。
public Form1()
{
InitializeComponent();
// Create an instance of the open file dialog box.
// This is test purpose only. In production xml files will come from SQL Database.
OpenFileDialog openFileDialog1 = new OpenFileDialog();
// Set filter options and filter index.
openFileDialog1.Title = "Please Choose XML File";
openFileDialog1.Filter = "XML Files (.xml)|*.xml|All Files (*.*)|*.*";
openFileDialog1.FilterIndex = 1;// varsayılan olarak jpg uzantıları göster
openFileDialog1.Multiselect = false;
// Call the ShowDialog method to show the dialog box.
openFileDialog1.ShowDialog();
XmlDataDocument xmldoc = new XmlDataDocument();
XmlNode xmlnode;
FileStream fs = new FileStream(openFileDialog1.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);
}
XML 加载 这是我的 xml 加载子。
// XML NODE: ADD
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();
}
}
这是 XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<Menu>
<AgencyType id="1" name="WATER" Active="Y">
<AgencyCode id="1" name="FRESH" Active="Y">
<TypeOfBills id="1" name="INTKON" Active="Y">
<PaymentType id="1" name="AA" Active="Y"></PaymentType>
<PaymentType id="2" name="BB" Active="N" /></PaymentType>
<PaymentType id="3" name="CC" Active="N"></PaymentType>
</TypeOfBills>
</AgencyCode>
</AgencyType>
</Menu>
原始 XML 文件 这是我构建 xml 文件的“XML Notepad 2007”应用程序。
树视图 XML 加载 当我加载我的 xml 数据后,这就是我的树视图在表单上显示的方式。
【问题讨论】:
-
请以文字而非图片的形式发布代码。它更容易阅读,然后我们可以复制和粘贴。同样,将 XML 文件作为文本发布 - 最好是一个简短但完整的文件,其中包含一个简短但完整的控制台应用程序来演示问题。
-
你可以使用 XmlNode.InnerXml 和 XmlNode.InnerText 属性
-
不,你没有。您没有将 XML 文件显示为文本,也没有显示一个简短但完整的控制台应用程序来演示该问题。 (UI 部分在这里是偶然的,IMO。)我强烈建议使用 LINQ to XML 而不是 XDocument,顺便说一句 - 它更干净。
-
谢谢乔恩,我忘记将 xml 添加为文本。没有任何唯一的用户界面。 UI 只有 Treeview 控件。
-
@Apple 你在 (xNode = inXmlNode.ChildNodes[i];) 代码中使用 XmlNode.InnerXml 是什么意思? XmlNode.InnerXml 有很长的线分隔间隔反斜杠。 !!!
标签: c# xml winforms attributes treeview