2009-10-31 89 views
0

如果我有一个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”在所有三个实例别的东西,怎么能我修改它,所以我只做一个改变,它改变了所有三个?事实上,如果我能够改变“前卫”并保持其他一切,那会更好。

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

s = "C:\ProgramData\abcdefg\" 

<installerDefaults pathToAllUsers = s> 
<localDatabasePath>s + "tracking.db3"</localDatabasePath> 
<languageDataBasePath>s + Content</languageDataBasePath> 

所以,当读取它会寻找localDatabasePath价值的程序,它得到的C:\ ProgramData \ ABCDEFG \ tracking.db3

这可能吗?

+0

你使用什么语言? – 2009-10-31 07:20:26

+0

你没有包含任何关于你的环境的信息。这种改变会使自己变成类似'sed'或'perl'的东西,并使用正则表达式来查找和更改你想要的引用 – Jherico 2009-10-31 07:22:13

回答

1

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

这些方法的问题是,他们不会轻易扩展到更普遍的问题。想想改变

C:\ProgramData\directories\Content 

C:\ProgramData\wibble\Content 

这一切都太容易也无意改变XML标签

<directories> 

了。通常,转换XML需要了解XML的工具。

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

这是相当多的学习,但如果你正在努力开发技能,它会设置你解决更复杂的XML操作问题。

0

看看XML实体;例如如图所示this tutorial page

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