用XML表示C:\Program文件

用XML表示C:\Program文件,xml,error-handling,path,escaping,cdata,Xml,Error Handling,Path,Escaping,Cdata,在我的XML文件中,我试图使用文件的路径;它是这样开始的: <value key="myPath"><![CDATA[C:\Program Files\myFile.exe]]> 然后,当我启动我的应用程序时,它总是说,找不到文件: 找不到文件C:\程序 所以,很明显,它仍然被程序和文件之间的空间所占据。我想我的CDATA可以解决这个问题 我错了多少?试着在路径周围加上双引号 <value key="myPath"><![CDATA["C:\Pro

在我的XML文件中,我试图使用文件的路径;它是这样开始的:

<value key="myPath"><![CDATA[C:\Program Files\myFile.exe]]>

然后,当我启动我的应用程序时,它总是说,找不到文件:

找不到文件C:\程序

所以,很明显,它仍然被程序和文件之间的空间所占据。我想我的CDATA可以解决这个问题


我错了多少?

试着在路径周围加上双引号

<value key="myPath"><![CDATA["C:\Program Files\myFile.exe"]]>


您可能也不需要使用CDATA,以防您想进一步清理它。

尝试在路径周围放置双引号

<value key="myPath"><![CDATA["C:\Program Files\myFile.exe"]]>


您可能也不需要使用CDATA,以防您想进一步清理它。

这可能不是XML,可能是您的应用程序在空间结束后终止

一些可能性

  • 将路径用引号括起来“”
  • 转义空间C:\Program\Files
  • 对从空格到%20的空格进行URL编码

如果没有关于如何执行XML的更多信息,就很难说了

这可能不是XML,可能是您的应用程序在共享空间后终止

一些可能性

  • 将路径用引号括起来“”
  • 转义空间C:\Program\Files
  • 对从空格到%20的空格进行URL编码

如果没有关于如何执行XML的更多信息,就很难说了

默认情况下,XML不会弄乱空白。它也不关心文件扩展名之前的退格、冒号或点。实际上,大多数有效路径字符也是有效的XML字符。(我认为它们实际上都是有效的XML文本节点内容。)


问题肯定出在XML处理中,而不是XML内容。

默认情况下,XML不会弄乱空白。它也不关心文件扩展名之前的退格、冒号或点。实际上,大多数有效路径字符也是有效的XML字符。(我认为它们实际上都是有效的XML文本节点内容。)


问题肯定出在XML处理中,而不是XML内容。

如果我设计这个应用程序,我会存储URI而不是文件名。在通常使用XML的世界中,这似乎是正确的方法。当然,您可以用XML存储任何您喜欢的内容,如果需要存储Windows文件名,那么欢迎您这样做


它不起作用的事实与XML无关。从XML中提取文件名并试图打开文件的接收应用程序出错:它要么弄乱了文件名本身,要么将其传递给API,而无法处理包含空格的文件名。

如果我设计此应用程序,我会存储URI而不是文件名。在通常使用XML的世界中,这似乎是正确的方法。当然,您可以用XML存储任何您喜欢的内容,如果需要存储Windows文件名,那么欢迎您这样做


它不起作用的事实与XML无关。从XML中提取文件名并试图打开文件的接收应用程序出错:它要么弄乱了文件名本身,要么将其传递给API,而无法处理包含空格的文件名。

您可以使用
"e;路径%quote技术。相当脏,但工作正常,

您可以使用
"e;路径%quote技术。相当脏,但工作正常,

不是xml、cdata或否,而是您的程序错误处理了空间。cdata只是一种不需要转义的方便方式&cdata(或XML)与您的问题无关。是你的程序没有正确处理实际值。你们是对的,是解析器把它搞砸了。感谢您的评论。不是xml、cdata或否,而是您的程序对空间的处理不当。cdata只是一种不需要转义的方便方式&cdata(或XML)与您的问题无关。是你的程序没有正确处理实际值。你们是对的,是解析器把它搞砸了。谢谢你的评论。