iT邦幫忙

0

vbs讀取xml檔 如何忽略某行程式碼?

我想用vbs讀取xml檔案(實際上是要去讀filezilla server的xml檔)
目前寫的測試程式可以show我所指定要讀取的部份
但改為讀取filezilla server.xml後 發現執行後沒有反應
逐行檢查發現是因為filezilla server.xml裡面有行

<SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">

若把這行拿掉,就可以執行
請問在vbs中該怎麼把xml裡的這行略過不去理它?...(整個xml不止出現過一次)

以下是我的程式碼

Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.Load("testOK.xml")

Set colNodes=xmlDoc.selectNodes("//user/Option[@Name='Comments']")

For Each objNode in colNodes
  Wscript.Echo objNode.Text 
Next

xml檔

<FileZillaServer>
<USERS>
  <user name="news">
            <Option Name="Pass">d04dc20036dbd8313ed055</Option>
            <Option Name="Group"></Option>
            <Option Name="User Limit">0</Option>
            <Option Name="IP Limit">0</Option>
            <Option Name="Enabled">1</Option>
            <Option Name="Comments">新聞</Option>
   </user>
		<SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">	
   <user name="pro">
            <Option Name="Pass">b52d04dc20036dbd8313ec</Option>
            <Option Name="Group"></Option>
			<Option Name="Comments">節目</Option>
            <Option Name="User Limit">0</Option>
            <Option Name="IP Limit">0</Option>
            <Option Name="Enabled">1</Option>
   </user>
		<SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">
  </USERS>
</FileZillaServer>

感謝大家的解答

1 個回答

4
fillano
iT邦超人 1 級 ‧ 2014-05-13 14:16:38
最佳解答

看起來是因為xml格式不正確。你把:

<pre class="c" name="code"><SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">

改成:

<pre class="c" name="code"><SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0" />

試試看。

kavekkb iT邦新手 5 級 ‧ 2014-05-14 10:12:07 檢舉

謝謝,試過後 就是沒有加/的關係!
但我的xml裡有大量的這行

<pre class="c" name="code"><SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0"> 

可以讓vbs不讀這行嗎?
或者要怎麼在它的後面加上/

感謝

fillano iT邦超人 1 級 ‧ 2014-05-14 11:25:17 檢舉

...不過我看了一下我有在使用的filezilla,他的server.xml裡面,都是像這樣:
[code]<SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">
<Download />
<Upload />
</SpeedLimits>[code]
這樣是不會有問題的。建議也確認一下為什麼伺服器設定檔會跑出不合法的xmlXD

如果要修改,我想你可以把檔案讀成字串,然後用Regix類別處理過,再寫回去。

fillano iT邦超人 1 級 ‧ 2014-05-14 11:25:58 檢舉
&lt;pre class="c" name="code">&lt;SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">
&lt;Download />
&lt;Upload />
&lt;/SpeedLimits>

少打了一個斜線XD

我要發表回答

立即登入回答