Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修改xml文件_Xml - Fatal编程技术网

修改xml文件

修改xml文件,xml,Xml,如果我有一个如下所示的xml文件: <?xml version="1.0" encoding="UTF-8"?> <installerDefaults pathToAllUsers="C:\ProgramData\prog"> <databaseConnector> <localDatabasePath>C:\ProgramData\prog\tracking.db3</localDatabasePath>

如果我有一个如下所示的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\tracking.db3
恩美
C:\ProgramData\prog\Content
我想在所有三个实例中将字符串“C:\ProgramData\prog”更改为其他内容,如何修改它,使我只做一次更改,而它会更改所有三个实例?事实上,如果我能改变“prog”并保留其他内容,那就更好了

我没有使用任何语言,我只是在文本编辑器中编辑文件。也许我问的不可能。难道没有连接字符串的方法吗,例如伪xml

s = "C:\ProgramData\abcdefg\"

<installerDefaults pathToAllUsers = s>
<localDatabasePath>s + "tracking.db3"</localDatabasePath>
<languageDataBasePath>s + Content</languageDataBasePath>
s=“C:\ProgramData\abcdefg”
s+“tracking.db3”
s+内容
因此,当读入它的程序查找localDatabasePath的值时,它得到的是C:\ProgramData\abcdefg\tracking.db3


这可能吗?

这完全取决于你想要多严格。在这种情况下,在任何文本编辑器中进行简单的查找/替换都可以完成这项工作。文本操作脚本语言(如sed或perl)允许您从命令行执行相同的操作

这些方法的问题在于,它们不会轻易扩展到更一般的问题。考虑改变

C:\ProgramData\directories\Content

也很容易意外地更改XML标记

<directories> 

也是。一般来说,转换XML需要理解XML的工具

因此,您确实需要一些能够理解XML的东西,而这正是可以使用XSLT的地方。您可以从中获得命令行处理器,并且有XSLT教程


这是相当多的学习内容,但是如果您正试图培养技能,那么它将帮助您解决更复杂的XML操作问题。

看看XML实体;e、 g.如图所示:


实体允许您在XML文件头的一个位置定义值或元素结构,并在正文中的多个点使用它。XML文件也可以使用在别处定义的实体。

您还没有包含任何有关环境的信息。这种更改将适用于类似于
sed
perl
的内容,并使用正则表达式查找和更改您想要的引用
<directories>