如果我有一个如下所示的xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<installerDefaults pathToAllUsers="C:\ProgramData\prog">
<databaseConnector>
<localDatabasePath>C:\ProgramData\prog\tracking.db3</localDatabasePath>
</databaseConnector>
<defaultLocales>
<installerDefaultLocale>en-US</installerDefaultLocale>
</defaultLocales>
<directories>
<languageDataBasePath>C:\ProgramData\prog\Content</languageDataBasePath>
</directories>
</installerDefaults>
我想在所有三个实例中将字符串“C:\ ProgramData \ prog”更改为其他内容,如何修改它以便我只进行一次更改并更改所有三个实例?实际上,如果我能改变“编程”并保留其他所有内容,那就更好了。
我没有使用任何语言,我只是在文本编辑器中编辑文件。也许我问的是不可能的。有没有办法连接字符串,例如伪xml。
s = "C:\ProgramData\abcdefg\"
<installerDefaults pathToAllUsers = s>
<localDatabasePath>s + "tracking.db3"</localDatabasePath>
<languageDataBasePath>s + Content</languageDataBasePath>
因此,当读取它的程序查找localDatabasePath的值时,它会得到C:\ ProgramData \ abcdefg \ tracking.db3
这可能吗?
答案 0 :(得分:1)
这完全取决于你想要的严谨程度。在这种情况下,任何文本编辑器中的简单查找/替换都可以完成工作。文本管理脚本语言(如sed或perl)可以让您从命令行执行相同的操作。
这些方法的问题在于它们不容易扩展到更普遍的问题。考虑改变
C:\ProgramData\directories\Content
到
C:\ProgramData\wibble\Content
很容易意外地更改XML标记
<directories>
太。通常,转换XML需要了解XML的工具。
因此,您确实需要能够理解XML的东西,而这正是可以使用XSLT的地方。您可以从here获取命令行处理器,并提供XSLT here的教程。
这是一个相当多的学习,但如果你正在努力开发技能,它会帮助你解决更复杂的XML操作问题。
答案 1 :(得分:0)
看看XML实体;例如如this tutorial page
所示实体允许您在XML文件的标题中的一个位置定义值或元素结构,并在正文中的多个点使用它。 XML文件也可以使用其他地方定义的实体。