2017-12-18 221 views
1

我有任務計劃程序xml文件,我正在嘗試編輯。xmlstarlet通過批處理文件更新不更新/正在工作

 <?xml version="1.0" encoding="UTF-16"?> 
    <Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task" version="1.4"> 
     <RegistrationInfo> 
     <Date>2017-03-12T16:40:52.4111579</Date> 
     <Author>Kevin</Author> 
     <Description>Runs Batch File For Counter</Description> 
     <URI>THETASKTITLEGOESHERE</URI> 
     </RegistrationInfo> 
    <Actions Context="Author"> 
    <Exec> 
     <Command>"ACTIONGOESHERE"</Command> 
    </Exec> 
    </Actions> 
</Task> 

這是我在批處理文件中。

@echo off 
pushd %~dp0 

xml ed -inplace -r "/Task/RegistrationInfo/Author" -v CGL XMLTEST1.xml 
xml ed -inplace -r "/Task/RegistrationInfo/URI" -v CGL-FakeTitle XMLTEST1.xml 
xml ed -inplace -r "/Task/Actions/Exec/Command" -v "C:\Batch\Counter.bat" XMLTEST1.xml 
pause 

我試過這裏的建議; xmlstarlet update value nothing happens

在末尾添加「> XMLTEST1output.xml」導致一個空文件。 任何建議都會有幫助。謝謝!

+0

選項'-inplace'做了什麼? – Cyrus

+0

某些'xmlstartlet's有一個'--inplace'選項,它保存對原始文件的更改。但是這並不能解釋爲什麼(例如)在我的測試中'.../URI'值不會改變爲CGL-FakeTitle。這些都不是用'-r'或'-u'工作的?任何人都會在「我們」的思想中發現錯誤?謝謝,祝大家好運。 – shellter

+0

並參閱我對上述鏈接的評論。不要使用'xml ... file.xml> file.xml'! – shellter

回答

1

這對我的作品Linux和xmlstarlet:

xmlstarlet edit --inplace \ 
      -N x="http://schemas.microsoft.com/windows/2004/02/mit/task" \ 
      -u "//x:Task/x:RegistrationInfo/x:Author" -v "CGL" \ 
      -u "//x:Task/x:RegistrationInfo/x:URI" -v "CGL-FakeTitle" \ 
      -u "//x:Task/x:Actions/x:Exec/x:Command" -v "C:\Batch\Counter.bat" XMLTEST1.xml 

我從-r切換(重命名),以-u更新值。在XMLTEST1.xml中,我用UTF-8替換了UTF-16

+0

謝謝。我嘗試了-u但仍然。它工作。我會試着在明天更換UTF,看看是否有幫助。 – KevinColby650