2016-10-27 4 views
0

Python(2.7)からSPを呼び出すと、mssqlサーバーからXMLオブジェクトが返されます。私は、次の形式でそれを得る:PythonでmssqlからXMLオブジェクトをデコードする

{u'XML_F52E2B61-18A1-11d1-B105-00805F49916B': 'D\x02i\x00d\x00D\x05d\x00e\x00s\x00c\x00r\x00D\x0bd\x00a\x00t\x00a\x00t\x00y\x00p\x00e\x00_\x00i\x00d\x00D\x13e\x00n\x00u\x00m\x00e\x00r\x00a\x00t\x00i\x00o\x00n\x00_\x00t\x00y\x00p\x00e\x00_\x00i\x00d\x00D\rs\x00y\x00s\x00t\x00e\x00m\x00f\x00e\x00a\x00t\x00u\x00r\x00e\x00D\x04l\x00i\x00n\x00k\x00D\x07F\x00e\x00a\x00t\x00u\x00r\x00e\x00\x01\x00\x08F\x00e\x00a\x00t\x00u\x00r\x00e\x00S\x00A\x01\x07A\x01\x01A\x03B\x01\x00\x00\x00\x81\x01\x01\x02A\x03\x11\x1a\x00r\x00e\x00s\x00p\x00o\x00n\x00d\x00e\x00n\x00t\x00_\x00i\x00d\x00\x81\x02\x01\x03A\x03B\x01\x00\x00\x00\x81\x03\x01\x05A\x03F\x01\x81\x05\x01\x06A\x03F\x00\x81\x06\x81\x07\x01\x07A\x01\x01A\x03B\x02\x00\x00\x00\x81\x01\x01\x02A\x03\x11 \x00W\x00o\x00r\x00k\x00s\x00 \x00a\x00t\x00 \x00c\x00o\x00m\x00p\x00a\x00n\x00y\x00\x81\x02\x01\x03A\x03B\x01\x00\x00\x00\x81\x03\x01\x05A\x03F\x01\x81\x05\x01\x06A\x03F\x01\x81\x06\x81\x07\x01\x07A\x01\x01A\x03B\x03\x00\x00\x00\x81\x01\x01\x02A\x03\x11\x0c\x00G\x00e\x00n\x00d\x00e\x00r\x00\x81\x02\x01\x03A\x03B\x08\x00\x00\x00\x81\x03\x01\x04A\x03B\x01\x00\x00\x00\x81\x04\x01\x05A\x03F\x00\x81\x05\x01\x06A\x03F\x00\x81\x06\x81\x07\x81\x00\x08F\x00e\x00a\x00t\x00u\x00r\x00e\x00S\x00'} 

私は2つの質問があります。

  • 1:これは何エンコーディングですか?
  • 2:これをデコードするにはどのライブラリを使用する必要がありますか?

追加:

enter image description here

SP:

XMLそれはSQL Management Studioで示したよう

ALTER PROCEDURE [dbo].[rdb_sql2python] 

AS 
BEGIN 
    SET NOCOUNT ON 
    SELECT * FROM [_rdb].[dbo].[features] FOR XML RAW ('Feature'), ROOT ('FeatureS'), ELEMENTS 
    SET NOCOUNT OFF 
END 
+0

あなたのデータベースではどのような文字セットを使用しましたか? – Enix

+1

これを明確にする:SQL ServerにSPが存在する。これはXMLを返し、あなたが投稿している文字列は呼び出し元の 'Python'コードに戻り値として到着します。これまで修正?最初の視察ではこれは 'JSON'のように見えますが、2番目の視点ではこれは' BSON'であるかもしれない符号化の記号のリストであるようです... – Shnugo

+0

@ Shnugo:はい、あなたは正しいです。私はBSONが何であるかを見て、あなたに戻ってきます。今までありがとう。 –

答えて

1

私が、答えのような何かを試してみてください少なくともこれは何ですか:

this JSON-viewerにあなたの文字列が表示されても機能しませんでした。

この文字列

{「XML_F52E2B61-18A1-11d1-B105-00805F49916Bを」:しかし、私は二重引用符で単一引用符を置き換え、それが何らかの形で働いていた「D」を削除、「U」を削除する場合: "¥x02i¥x00d¥x00D¥x00d¥x00e¥x00s¥x00c¥x00r¥x00d¥x0bd¥x00a¥x00t¥x00a¥x00t¥x00y¥x00p¥x00e¥x00_¥x00i¥x00d¥x00D¥x13e¥x00n¥ x00y \ x00m \ x00e \ x00m \ x00e \ x00m \ x00e \ x00m \ x00e \ x00m \ x00e \ x00m \ x00d \ x00x \ x00e \ x00a \ x00e \ x00u \ x00e \ x00d \ x04l \ x00i \ x00n \ x00k \ x00d \ x07F \ x00e \ x00a \ x00t \ x00u \ x00r \ x00e \ x00 \ x01 \ x00 \ x08F \ x00e \ x00a \ x00t \ x00u \ x00r \ x00e \ x00S \ x00A \ X01 \ x07A \ X01 \ x01A \ x03B \ X01 \ X00 \ X00 \ X00 \ X81 \ X01 \ X01 \ x02A \ X03 \ x11の\ X1A \ x00r \ x00e \ x00s \ x00p \ x00o \ x00n \ x00d \ x0 0E \ x00nの\のx00t \ x00_ \ x00i \ x00d \ X00 \ X81 \ X02 \ X01 \ x03A \ x03B \ X01 \ X00 \ X00 \ X00 \ X81 \ X03 \ X01 \ x05A \ x03F \ X01 \ X81 \ X05 \ X01 \ x03A \ x03F \ x00 \ x03 \ x0 \ x07 \ x01 \ x07A \ x01 \ x01A \ x03B \ x02 \ x00 \ x00 \ x00 \ x81 \ x01 \ x01 \ x02A \ x03 \ x11 \ x00W \ x00o \ x00r \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x03 \ x03B \ x01 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ X03 \ X01 \ x05A \ x03F \ X01 \ X81 \ X05 \ X01 \ x06A \ x03F \ X01 \ X81 \ X06 \ X81 \ X07 \ X01 \ x07A \ X01 \ x01A \ x03B \ X03 \ X00 \ X00 \ X00 \ X81 \ X01 \ X01 \ x02A \ X03 \ x11の\ x0c \ x00G \ x00e \ x00n \ x00d \ x00e \ x00r \ X00 \ X81 \ X02 \ X01 \ x03A \ x03B \ X08 \ X00 \ X00 \ X00 \ X81 \ X03 \ X01 \ x06A \ x03B \ x01 \ x00 \ x00 \ x00 \ x81 \ x04 \ x01 \ x05A \ x03F \ x00 \ x81 \ x05 \ x01 \ x06A \ x03F \ x00 \ x81 \ x06 \ x81 \ x07 \ x81 \ x00 \ x08F \ x00e \ x00a \ x00t \ x00u \ x00r \ x00e \ x00S \ X00" }

に変換し、
Name: XML_F52E2B61-18A1-11d1-B105-00805F49916B 
Value: "idDdescrDdatatype_idDenumeration_type_idD systemfeatureDlinkDFeatureFeatureSAAABArespondent_idABAFAFAABA Works at companyABAFAFAABAGenderABABAFAFFeatureS" 

最終的な解決策ではありませんが、これはBSONでエンコードされたJSONであることは明らかです。

あなたの(関連する)SPとそれを呼び出す方法を表示することをお勧めします。おそらく、完全に異なる/より良いアプローチがあるかもしれません...

関連する問題