Xml XPathException无效令牌

Xml XPathException无效令牌,xml,exception,Xml,Exception,我正在将所有文件从客户端计算机备份到服务器。备份每个文件后,我在XML文件中创建或更新一条记录。我的问题是,有时用于创建或查找节点的字符串包含无效令牌。用于创建或查找节点的字符串由备份文件的文件夹路径和文件名决定 例如: 备份的文件:C:\users\Jon\u Doe\Desktop\Report.doc XML文件: <root> <Jon_Doe> <Desktop> <Report LastBackup="12/17/

我正在将所有文件从客户端计算机备份到服务器。备份每个文件后,我在XML文件中创建或更新一条记录。我的问题是,有时用于创建或查找节点的字符串包含无效令牌。用于创建或查找节点的字符串由备份文件的文件夹路径和文件名决定

例如:
备份的文件:C:\users\Jon\u Doe\Desktop\Report.doc
XML文件:

<root>
  <Jon_Doe>
    <Desktop>
      <Report LastBackup="12/17/2014 11:51:10" />
    </Desktop>
  </Jon_Doe>
</root>

如果遇到一个字符串包含以下任何字符
{“”、'、'、'、'('、')}
,我会将其从该字符串中删除。但我无法确定字符串“64bitPrereq”有什么问题

在使用字符串查找或创建节点之前,如何确定字符串的哪个部分是“无效令牌”

我无法确定字符串“64bitPrereq”有什么问题

XML不允许元素名称以ASCII数字开头。名称可以在第一个字符后包含数字、点和连字符,但必须以字母或下划线开头(确切的规则稍微复杂一些,看看您是否关心非拉丁字符)

对于这类任务,使用固定的元素名并将文件或文件夹名存储为属性将更有意义,而不是尝试将文件夹名转换为元素名本身,例如

<root>
  <Folder name="Jon_Doe">
    <Folder name="Desktop">
      <File name="Report" LastBackup="12/17/2014 11:51:10" />
    </Folder>
  </Folder>
</root>

漂亮!很高兴事情就这么简单。非常感谢你。