我正在尝试编写一个winforms应用程序,它在TreeView中显示任何打开的XML文件节点(并且只显示它的节点)并分别显示所选节点的属性(通过选择我在TreeView中选择的意思)(显示在列表框例如)。我试图通过使用以下代码实现此目的,但它抛出一个异常说:'family \ parent'有一个无效的令牌。
private void TView__AfterSelect(object sender, TreeViewEventArgs e)
{
var doc = XDocument.Load(businessLayer.InputFilepath);
XElement myElement = doc.Root.XPathSelectElement(TView_.SelectedNode.FullPath);
try
{
foreach (var attribute in myElement.Attributes())
{
listBox1.Items.Add(attribute.Value);
}
}
catch (Exception)
{
}
}
我正在使用以下XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<family>
<parent>
<id>grandfather</id>
<parent>
<id>father</id>
<parent>
<id>brother</id>
<child>
<id>niece</id>
</child>
</parent>
<parent>
<is>me</is>
<child>
<id>son</id>
</child>
<child>
<id>dauhter</id>
</child>
</parent>
<child>
<id>sister</id>
</child>
</parent>
<parent>
<id>uncle</id>
<parent>
<id>cousin sister</id>
<child>
<id>second cousin</id>
</child>
</parent>
<child>
<id>cousin brother</id>
</child>
</parent>
</parent>
</family>
我不知道我还能尝试什么,所以感谢任何帮助。
答案 0 :(得分:1)
要避免该异常,您必须将每个双反斜杠替换为XML文件路径中的斜杠。
string path = treeView1.SelectedNode.FullPath.Replace('\\', '/');
XElement myElement = doc.XPathSelectElement(path);