請問這個xml怎麼用simplexml解析,vardump總是false

來源:互聯網
上載者:User
版主,又來求助了。。。這回事是網頁返回的XML資料,我不知道為什麼不能用simplexml讀取,var_dump顯示false

echo '#########################'.'

';var_dump($xml); echo '#########################';echo '
'.'
'.'
'.$xml->xsm->nickname;

如果用上面這段直接列印是這樣子的:

echo '#########################'.'

';var_dump(simplexml_load_string($xml); echo '#########################';echo '
'.'
'.'
'.$xml->xsm->nickname;

用這段代碼列印就會顯示bool(false)
求解決


回複討論(解決方案)

$xml = preg_replace('/!|--/', '', $xml);var_dump(simplexml_load_string($xml));

$xml = preg_replace('/!|--/', '', $xml);var_dump(simplexml_load_string($xml));


//$xml='';$xml = preg_replace('/!--\?|--/','', $xml);var_dump($xml);

這樣我試了,單獨一行可以正匹配,但是在這段代碼裡無效。在網頁元素查看器裡看到返回的數值還是有注釋符

你為什麼要自作聰明呢

$xml = preg_replace('/!|--/', '', $xml);var_dump(simplexml_load_string($xml));


之前我不懂那個是xml裡的注釋,現在明白了,所以想到了另一種方法,可是還是失敗了,能告訴我下原因嗎?
$xml = ''.$xml;var_dump(simplexml_load_string($xml));

我是用字串運算子加了一行xml的檔案標記,可是用simplexml_load_string的時候依然顯示失敗

還是那話,你為什麼要自作聰明呢

你為什麼要自作聰明呢


你給My Code貼上去也是無法載入...

那是因為你不給我你的資料

還是那話,你為什麼要自作聰明呢



這是直接複製給My Code貼上去運行後的結果...

依然得去掉simplexml載入的語句才能dump出來

你光是沒有用的!
你怎麼知道其中沒有不可列印的字元呢?

那是因為你不給我你的資料


114wedc2116116011062014v=20140806000211620001140748822873510116226011162288228735c6959b4eacf7b2f

這是我用fwrite寫入的$xml值

裡面沒有注釋掉檔案標記,可不知道問什麼不能載入

你光是沒有用的!
你怎麼知道其中沒有不可列印的字元呢?


在IE下查看會顯示
結束標記 'xsm' 與開始標記 'comShort' 不匹配。

SimpleXMLElement Object(    [@attributes] => Array        (            [code] => 0000            [msg] => 驗證成功abc            [trans_time] => 20140808162708        )    [userId] => 114    [nickName] => wedc    [userType] => 2    [comId] => 116    [saledptId] => 11601    [refId] => 1062014    [comName] => SimpleXMLElement Object        (        )    [domainUrl] => v=2014080600    [comType] => 02    [comShort] => SimpleXMLElement Object        (        )    [parentComId] => 11620001    [expirationTime] => 1407488228735    [planText] => 10116226011162288228735    [signatureValue] => c6959b4eacf7b2f)
這不是可以嗎?

你中顯示字串長度為 984 位元組,而你貼出的只有 509 位元組。
還有四百多位元組到哪裡去了?

你光是沒有用的!
你怎麼知道其中沒有不可列印的字元呢?


版主,我知道,原因是裡面有中文所以不能載入,這個如何才能解決?因為資料不是我自己的所以我也沒法改

SimpleXMLElement Object(    [@attributes] => Array        (            [code] => 0000            [msg] => 驗證成功abc            [trans_time] => 20140808162708        )    [userId] => 114    [nickName] => wedc    [userType] => 2    [comId] => 116    [saledptId] => 11601    [refId] => 1062014    [comName] => SimpleXMLElement Object        (        )    [domainUrl] => v=2014080600    [comType] => 02    [comShort] => SimpleXMLElement Object        (        )    [parentComId] => 11620001    [expirationTime] => 1407488228735    [planText] => 10116226011162288228735    [signatureValue] => c6959b4eacf7b2f)
這不是可以嗎?

你中顯示字串長度為 984 位元組,而你貼出的只有 509 位元組。
還有四百多位元組到哪裡去了?


還有400位元組是一長串字串太長我就刪了半截
謝謝你,我發現原因了,是因為PHP用utf8編碼的,而擷取的xml資料時gbk的,把檔案裡的gbk改成utf8就解決了

SimpleXMLElement Object(    [@attributes] => Array        (            [code] => 0000            [msg] => 驗證成功abc            [trans_time] => 20140808162708        )    [userId] => 114    [nickName] => wedc    [userType] => 2    [comId] => 116    [saledptId] => 11601    [refId] => 1062014    [comName] => SimpleXMLElement Object        (        )    [domainUrl] => v=2014080600    [comType] => 02    [comShort] => SimpleXMLElement Object        (        )    [parentComId] => 11620001    [expirationTime] => 1407488228735    [planText] => 10116226011162288228735    [signatureValue] => c6959b4eacf7b2f)
這不是可以嗎?

你中顯示字串長度為 984 位元組,而你貼出的只有 509 位元組。
還有四百多位元組到哪裡去了?
成功了 ~~~~~~[]
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.