如果你是如圖你鏈接的博客,暗示後的PHP數據類型獲取數據:
$xml = sqlsrv_get_field($stmt, 0, SQLSRV_PHPTYPE_STRING('UTF-8'));
然後變量$xml
包含UTF-8編碼的字符串。 PHP中的字符串始終是二進制的,而UTF-8是XML文檔的默認編碼。這在PHP中是相同的:PHP中的DOMDocument預計所有輸入字符串都是UTF-8編碼(如IntroductionDocs中所述)。
所有你需要做的是load the XML as stringDocs:
$doc = new DOMDocument();
$result = $doc->loadXML($xml);
然後,您可以驗證,如果這個工程通過檢查返回值,並從文檔輸出XML作爲字符串:
var_dump($result); # should be (boolean) TRUE
$doc->save('php://output'); # should be your XML verbatim
這應該這樣做,讓我知道如果你使用不同的方式從數據庫中獲取。因爲這可能會有所不同,例如如果您獲得a PHP StreamDocs,則可能需要使用stream_get_contents()
Docs將該流先轉換爲字符串。您可以在而不是加載流與DOMDocument在PHP中,這就是爲什麼你需要先將它轉換爲一個字符串。
看得那麼清楚:
感謝您的答覆。我認爲可能有辦法直接導入流。 XML數據集非常小,所以我想轉換爲字符串和解析的開銷應該很小。 – Mark 2013-05-03 13:32:03
AFAIK直接導入流是不可能的。我希望它會,例如與['XMLReader'](http://php.net/XMLReader),但像'DOMDocument'這是不可能的(但它實際上從來沒有真正的問題,這只是一個有點可惜這是不可能的)。 – hakre 2013-05-03 13:46:42
但是我同意,現在我已經設法通過將輸出轉換爲字符串來構建我的XML文檔。再次感謝你的幫助。 – Mark 2013-05-03 15:35:57