«Формат данного пути не поддерживается» Ошибка при попытке извлечь XML в Treeview - PullRequest
0 голосов
/ 08 мая 2018

В настоящее время пытаюсь получить файл XML из местоположения на моем компьютере для отображения в моем Treeview. Я в значительной степени использовал код из другого вопроса stackoverflow:

Рекурсия, синтаксический анализ XML-файла с атрибутами в виде дерева c #

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
    string Path = Application.StartupPath + @"C:\Users\apearson\Documents\Works.xml";
    public Form1()
    {
        InitializeComponent();
        DisplayTreeView(Path);
    }

    private void DisplayTreeView(string pathName)
    {
        try
        {
            XmlDocument dom = new XmlDocument();
            dom.Load(pathName);

            treeView1.Nodes.Clear();

            foreach (XmlNode xNode in dom.ChildNodes)
            {
                var tNode = treeView1.Nodes[treeView1.Nodes.Add(new TreeNode(xNode.Name))];
                AddNode(xNode, tNode);
            }
        }
        catch (XmlException xmlEx)
        {
            MessageBox.Show(xmlEx.Message);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
    {

        if (inXmlNode is XmlElement)
        {
            foreach (var att in inXmlNode.Attributes.Cast<XmlAttribute>().Where(a => !a.IsDefaultNamespaceDeclaration()))
            {
                inTreeNode.Text = inTreeNode.Text + " " + att.Name + ": " + att.Value;
            }

            var nodeList = inXmlNode.ChildNodes;
            foreach (XmlNode xNode in inXmlNode.ChildNodes)
            {
                var tNode = inTreeNode.Nodes[inTreeNode.Nodes.Add(new TreeNode(xNode.Name))];
                AddNode(xNode, tNode);


            }
        }
        else
        {
            inTreeNode.Text = (inXmlNode.OuterXml).Trim();
        }
        treeView1.ExpandAll();
    }
}

При отладке я заметил, что он остановится на dom.Load (pathName), а затем перейдет прямо к улову. Затем выведите мне сообщение об ошибке «Формат данного пути не поддерживается». Я видел некоторые другие статьи с этой проблемой, но ничего с Treeview, так что не знаю, могли бы они помочь. Я что-то упускаю?

1 Ответ

0 голосов
/ 08 мая 2018

Эта часть

string Path = Application.StartupPath + @"C:\Users\apearson\Documents\Works.xml

... объединит путь запуска с полным путем, который вы определили как литерал.

Это приведет к чему-то вроде

C:\blah\blub\C:\Users\apearson\Documents\Works.xml

... который не является допустимым путем ..

...