您在下面的代码中收到错误,因为路径中存在非法字符,如何清除?
string pathway = System.IO.File.ReadAllText(@"D:\\Project\\SMCCampaignmgmt\\trunk\\Run\\smccampaignwindows.exe.config");
XmlDocument doc = new XmlDocument();
doc.Load(pathway);
答案 0 :(得分:5)
字符串开头的@
字符表示您声明了 literal 字符串,您无需将其转义。
使用\
代替\\
,或者删除@
符号。
在测试之后,看起来双反斜杠实际上不会抛出此异常,Windows似乎足够聪明,可以忽略额外的\
。但是,您似乎加载了另一个用于加载XML文件的路径,即
string pathway = ...
问题很可能出在此文件路径中(您的示例中未显示)。该路径中包含无效字符,或者可能是由于您在如何读取文件时出现编码问题。
实际上在进一步审核您的代码时,您似乎正在尝试加载app.config
文件。 XDocument
的{{3}}方法需要文件路径,而不是原始XML。您有2个选项,通过直接传递文件路径正确使用Load
doc.Load("D:\\Project\\SMCCampaignmgmt\\trunk\\Run\\smccampaignwindows.exe.config")
或保留代码,但调用Load方法
string pathway = System.IO.File.ReadAllText(@"D:\\Project\\SMCCampaignmgmt\\trunk\\Run\\smccampaignwindows.exe.config");
XmlDocument doc = XmlDocument.Parse(pathway);
答案 1 :(得分:2)
如果使用@来转义整个字符串,则不应在该字符串内手动转义\。
答案 2 :(得分:0)
我在这条路上看不到任何非法字符,但是给它一个去吧
doc.Save(@"D:\Project\SMCCampaignmgmt\trunk\Run\smccampaignwindows.exe.config");
答案 3 :(得分:0)
在途径中加载整个文件(ReadAllText)。非法字符可能在该文件的内容中(即在D:\ Project \ SMCCampaignmgmt \ trunk \ Run \ smccampaignwindows.exe.config中)