2009-10-31 91 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文件也可以使用別處定義的實體。