修改xml文件

时间:2009-10-31 07:11:53

标签: xml

如果我有一个如下所示的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

这可能吗?

2 个答案:

答案 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文件也可以使用其他地方定义的实体。