




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Go語(yǔ)言中數(shù)據(jù)格式的分析與轉(zhuǎn)換Go語(yǔ)言從入門到精通了解編程中常用的數(shù)據(jù)交換格式掌握Go語(yǔ)言中JSON格式數(shù)據(jù)的分析與處理01FORMAT02XML03JSONtarget目標(biāo)掌握Go語(yǔ)言中XML格式數(shù)據(jù)的分析與處理目錄導(dǎo)航10.1常見的數(shù)據(jù)交換格式Contents數(shù)據(jù)交換格式在不同的計(jì)算機(jī)之間、應(yīng)用程序之間,通過(guò)文件、網(wǎng)絡(luò)等各種途徑進(jìn)行信息交換時(shí),為了雙方都能夠理解而制定的數(shù)據(jù)格式。
數(shù)據(jù)交換格式的基本要求是能夠跨平臺(tái)、跨語(yǔ)言得到準(zhǔn)確無(wú)誤的理解常見的數(shù)據(jù)交換格式純文本
CSV
XML
JSON(及各種變體)YAMLProtoBuf目錄導(dǎo)航10.2XML格式的處理ContentsXML格式
XML是可擴(kuò)展標(biāo)記語(yǔ)言(EXtensibleMarkupLanguage)的縮寫簡(jiǎn)稱,它被設(shè)計(jì)為專注于數(shù)據(jù)的表達(dá)而非其他(例如數(shù)據(jù)的顯示樣式等)方面,因此特別適合也主要被應(yīng)用于傳輸數(shù)據(jù)和存儲(chǔ)數(shù)據(jù)XML格式XML格式是基于文本格式之上的,因此,XML文件就是純文本文件的一種。XML文件可以直接用文本編輯軟件打開,其中內(nèi)容也都是由人可以識(shí)別的字符組成的。XML數(shù)據(jù)在程序中的表現(xiàn)形式就是一個(gè)字符串XML對(duì)文本進(jìn)行了更高級(jí)別的格式要求,以便能夠用一定的文本格式規(guī)范來(lái)表現(xiàn)出各種類型的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu),能夠支持復(fù)雜的數(shù)據(jù)類型并且能對(duì)數(shù)據(jù)的取值范圍等做出更具體的規(guī)定和限制將數(shù)據(jù)序列化成XML格式引用encoding/xml包//
Person
準(zhǔn)備進(jìn)行XML序列化的表示個(gè)人信息的數(shù)據(jù)結(jié)構(gòu)類型type
Person
struct
{
XMLName
xml.Name
`xml:"person"`
Name
string
`xml:"name"`
ID
string
`xml:"id,attr"`
Age
int
`xml:"age"`
Married
bool
Phone
string
`xml:"phone,omitempty"`
Mobile
[]string
`xml:"mobiles>mobile"`
height
float64
`xml:"height"`
AddressType
SecondAddress
AddressType
`xml:"secondAddress"`
Remark
string
`xml:",comment"`}
準(zhǔn)備數(shù)據(jù)結(jié)構(gòu)用到的嵌套數(shù)據(jù)結(jié)構(gòu)//
AddressType
表示個(gè)人住址的數(shù)據(jù)結(jié)構(gòu)type
AddressType
struct
{
State
string
City
string
Detail
string
PostalCode
string
`xml:"postalCode,attr"`
remark
string}常見類型無(wú)需標(biāo)注進(jìn)行XML序列化(編碼)person1
:=
&Person{Name:
"張三",
ID:
,
Age:
25,
Married:
false,
Mobile:
[]string{,
},
height:
170,
AddressType:
AddressType{State:
"中國(guó)",
City:
"北京",
Detail:
"海淀區(qū)中關(guān)村1號(hào)",
PostalCode:
"100099",
remark:
"路口右轉(zhuǎn)"},
SecondAddress:
AddressType{State:
"中國(guó)",
City:
"上海",
Detail:
"徐匯區(qū)南京路1號(hào)",
PostalCode:
"210001",
remark:
"無(wú)"},
Remark:
"信息有待完善"}
var
strT
strings.BuilderencoderT
:=
xml.NewEncoder(&strT)errT
:=
encoderT.Encode(person1)if
errT
!=
nil
{
t.Printfln("XML編碼時(shí)發(fā)生錯(cuò)誤:%v",
errT.Error())
return}t.Printfln("XML字符串為:%#v",
strT.String())
outputT,
errT
:=
xml.MarshalIndent(person1,
"
",
"
")if
errT
!=
nil
{
t.Printfln("XML縮進(jìn)編碼時(shí)發(fā)生錯(cuò)誤:%v",
errT)
return}
os.Stdout.Write(outputT)序列化結(jié)果XML字符串為:"<personid=\"postalCode=\"100099\"><name>張三</name><age>25</age><Married>false</Married><mobiles><mobile>lt;/mobile><mobile>lt;/mobile></mobiles><State>中國(guó)</State><City>北京</City><Detail>海淀區(qū)中關(guān)村1號(hào)</Detail><secondAddresspostalCode=\"210001\"><State>中國(guó)</State><City>上海</City><Detail>徐匯區(qū)南京路1號(hào)</Detail></secondAddress><!--信息有待完善--></person>"<personid=postalCode="100099"><name>張三</name><age>25</age><Married>false</Married><mobiles><mobile>lt;/mobile><mobile>lt;/mobile></mobiles><State>中國(guó)</State><City>北京</City><Detail>海淀區(qū)中關(guān)村1號(hào)</Detail><secondAddresspostalCode="210001"><State>中國(guó)</State><City>上海</City><Detail>徐匯區(qū)南京路1號(hào)</Detail></secondAddress><!--信息有待完善--></person>進(jìn)行XML序列化(編碼)person1
:=
&Person{Name:
"張三",
ID:
,
Age:
25,
Married:
false,
Mobile:
[]string{,
},
height:
170,
AddressType:
AddressType{State:
"中國(guó)",
City:
"北京",
Detail:
"海淀區(qū)中關(guān)村1號(hào)",
PostalCode:
"100099",
remark:
"路口右轉(zhuǎn)"},
SecondAddress:
AddressType{State:
"中國(guó)",
City:
"上海",
Detail:
"徐匯區(qū)南京路1號(hào)",
PostalCode:
"210001",
remark:
"無(wú)"},
Remark:
"信息有待完善"}
var
strT
strings.BuilderencoderT
:=
xml.NewEncoder(&strT)errT
:=
encoderT.Encode(person1)if
errT
!=
nil
{
t.Printfln("XML編碼時(shí)發(fā)生錯(cuò)誤:%v",
errT.Error())
return}t.Printfln("XML字符串為:%#v",
strT.String())
outputT,
errT
:=
xml.MarshalIndent(person1,
"
",
"
")if
errT
!=
nil
{
t.Printfln("XML縮進(jìn)編碼時(shí)發(fā)生錯(cuò)誤:%v",
errT)
return}
os.Stdout.Write(outputT)XML序列化說(shuō)明1
處理XML格式文本需要使用“encoding/xml”包
Person類型是自定義的用于存儲(chǔ)個(gè)人信息的數(shù)據(jù)結(jié)構(gòu)類型
Person結(jié)構(gòu)類型中的大多數(shù)字段(成員變量)后都有一個(gè)用于指導(dǎo)如何進(jìn)行XML序列化的特殊字符串,稱作“標(biāo)記”(tag),也稱為XML序列化描述字符串,簡(jiǎn)稱描述字符串
例如,“Name”字段后用反引號(hào)括起來(lái)的描述字符串`xml:"name"`,表示Name字段在序列化后的XML中將被轉(zhuǎn)換成名字為“name”的XML元素節(jié)點(diǎn)XML序列化說(shuō)明2
Person結(jié)構(gòu)中的第一行“XMLNamexml.Name`xml:"person"`”并非定義一個(gè)字段,而是結(jié)構(gòu)體中為XML序列化專用的一個(gè)設(shè)置寫法,用于指定該結(jié)構(gòu)在XML序列化后根節(jié)點(diǎn)的名稱
描述字符串如果是類似`xml:“id,attr”`的形式,則表明該字段將被序列化成為它上級(jí)節(jié)點(diǎn)的一個(gè)名為“id”的屬性(例子中是Person結(jié)構(gòu)中的ID字段)
描述字符串如果是類似`xml:"phone,omitempty"`的形式,則表示如果該字段有值則將正常序列化為名字為“phone”的XML元素節(jié)點(diǎn),否則如果是空值(包括各種Go語(yǔ)言中的零值,例如nil)則該節(jié)點(diǎn)將被省略XML序列化說(shuō)明3描述字符串如果是類似`xml:"mobiles>mobile"的形式,則表示該字段將被序列化成名為mobile的元素節(jié)點(diǎn),并且放在mobiles元素節(jié)點(diǎn)之內(nèi)成為它的下一級(jí)節(jié)點(diǎn);這種嵌套的級(jí)別可以是多級(jí)的,例如`xml:"mobiles>mobile>subs“
Person結(jié)構(gòu)中的Mobile字段是[]string類型的,表示一個(gè)人可以有多個(gè)手機(jī)號(hào),結(jié)合描述字符串`xml:"mobiles>mobile",這樣序列化出來(lái)的XML文本中,將用mobiles節(jié)點(diǎn)下并列的名為“mobile”的XML元素節(jié)點(diǎn)來(lái)表示多個(gè)手機(jī)號(hào);如果描述字符串為`xml:"mobile",則會(huì)有多個(gè)mobile節(jié)點(diǎn)被直接放在根節(jié)點(diǎn)(即本例中的person節(jié)點(diǎn))下形如`xml:",comment"`的描述字符串修飾的字段將被序列化成XML中的注釋,將不起數(shù)據(jù)存儲(chǔ)的作用XML序列化說(shuō)明4沒(méi)有加上描述字符串的字段,類似Person結(jié)構(gòu)中的Married字段,將被序列化為與該字段名字一致的XML節(jié)點(diǎn)所有被導(dǎo)出的字段(即大寫字母開頭的字段)才可以被序列化,小寫字母開頭的字段將被忽略,例如本例Person結(jié)構(gòu)中的height字段,雖然后面寫有XML序列化描述字符串,但仍然在序列化后的XML文本中被忽略掉
Person結(jié)構(gòu)中的SecondAddress字段是AddressType類型的,這也是我們?cè)诖a中自定義的一個(gè)結(jié)構(gòu),用于表示個(gè)人住址信息;這是結(jié)構(gòu)體中包含復(fù)合數(shù)據(jù)類型以及嵌套另一個(gè)結(jié)構(gòu)的方法XML序列化說(shuō)明5
匿名字段:在Person結(jié)構(gòu)中沒(méi)有字段名的也是AddressType類型的字段
匿名字段是Go語(yǔ)言中實(shí)現(xiàn)類似面向?qū)ο笾小袄^承”概念的重要手段
一個(gè)結(jié)構(gòu)體中如果有一個(gè)匿名字段,而該匿名字段又是一個(gè)結(jié)構(gòu)類型,則該匿名字段所代表結(jié)構(gòu)類型的所有字段會(huì)被自動(dòng)導(dǎo)入到該結(jié)構(gòu)體中引用結(jié)構(gòu)體中匿名字段時(shí),直接用該匿名字段的數(shù)據(jù)類型作為字段名即可XML序列化說(shuō)明6
AddressType結(jié)構(gòu)類型中的PostalCode字段的XML描述字符串演示了如何在某個(gè)子節(jié)點(diǎn)而非根節(jié)點(diǎn)中添加屬性
使用encoding/xml包中的Encoder數(shù)據(jù)類型來(lái)做XML的編碼(將數(shù)據(jù)序列化為XMLxml.MarshalIndent函數(shù)可以編碼出帶有縮進(jìn)的XML文本,返回的是[]byte類型的數(shù)據(jù),需要轉(zhuǎn)換成字符串才能輸出XML序列化說(shuō)明7
AddressType結(jié)構(gòu)類型中的PostalCode字段的XML描述字符串演示了如何在某個(gè)子節(jié)點(diǎn)而非根節(jié)點(diǎn)中添加屬性
使用encoding/xml包中的Encoder數(shù)據(jù)類型來(lái)做XML的編碼(將數(shù)據(jù)序列化為XMLxml.MarshalIndent函數(shù)可以編碼出帶有縮進(jìn)的XML文本,返回的是[]byte類型的數(shù)據(jù),需要轉(zhuǎn)換成字符串才能輸出XML格式的文本反序列化decoderT
:=
xml.NewDecoder(fileT)errT
=
decoderT.Decode(person1)
if
errT
!=
nil
{}
t.Printfln("person1:%#v",
person1)
person2
:=
&Person{}
bytesT,
errT
:=
ioutil.ReadFile(`c:\test\person1.xml`)if
errT
!=
nil
{}
errT
=
xml.Unmarshal(bytesT,
person2)if
errT
!=
nil
{}
t.Printfln("person2:%#v",
person2)XML處理的補(bǔ)充知識(shí)1如果在結(jié)構(gòu)體中沒(méi)有定義XMLName字段,XML序列化時(shí)將以結(jié)構(gòu)名字作為XML文本中根節(jié)點(diǎn)的名稱普通的數(shù)據(jù)類型也可以被進(jìn)行XML編碼,此時(shí)生成的節(jié)點(diǎn)名為該類型的名稱描述字符串為`xml:"-"`的結(jié)構(gòu)體中字段將被忽略描述字符串為`xml:",innerxml"`的字段,將原樣放在XML中而不會(huì)被加上標(biāo)簽(即不會(huì)生成XML元素節(jié)點(diǎn)),如果需要標(biāo)簽則應(yīng)自行加上XML處理的補(bǔ)充知識(shí)2描述字符串為`xml:",chardata"`的字段,也不會(huì)生成XML元素節(jié)點(diǎn),將被作為字符數(shù)據(jù)直接放入描述字符串為`xml:",cdata"`的字段,同樣也不會(huì)生成XML元素節(jié)點(diǎn),而是編碼為XML中的CDATA字符數(shù)據(jù)形式,該形式主要用于放入包含一些特殊字符的文本如果要讓CDATA字符數(shù)據(jù)在XML中放于一個(gè)元素節(jié)點(diǎn)之內(nèi),需要定義一個(gè)結(jié)構(gòu)類型,例子見下頁(yè):CDATA的應(yīng)用示例1type
CDATA
struct
{
string
`xml:",cdata"`}type
CodeData
struct
{
CodeName
string
CodeType
string
`xml:",attr"`
CodeDescription
string
`xml:",innerxml"`
CodeData1
[]byte
`xml:",chardata"`
CodeData2
CDATA
Remark
string
`xml:"-"`}CDATA的應(yīng)用示例2func
main()
{
code1
:=
new(CodeData)
code1.CodeName
=
"測(cè)試代碼"
code1.CodeType
=
"Go"
code1.CodeDescription
=
"\n<CodeDescription>本段描述將被原樣保留</CodeDescription>"
code1.CodeData1
=
[]byte{0x65,
0x33,
0x32}
code1.CodeData2
=
CDATA{`for
i
:=
0;
i
<=
18;
i
++
{fmt.Printf("18");}`}
code1.Remark
=
"本段備注將被忽略"
xmlBytesT,
errT
:=
xml.MarshalIndent(code1,
"",
"
")
if
errT
!=
nil
{
t.Printfln("XML編碼時(shí)發(fā)生錯(cuò)誤:%v",
errT)
return
}
t.Printfln("%v",
string(xmlBytesT))}CDATA的應(yīng)用示例3單個(gè)浮點(diǎn)數(shù)的XML:<float64>64.8</float64>code1編碼后的XML:<CodeDataCodeType="Go"><CodeName>測(cè)試代碼</CodeName><CodeDescription>本段描述將被原樣保留</CodeDescription>e32<CodeData2><![CDATA[fori:=0;i<=18;i++{fmt.Printf("18");}]]></CodeData2></CodeData>運(yùn)行結(jié)果自行控制某數(shù)據(jù)類型的XML序列化反序列化func
(v
AddressType)
MarshalXML(e
*xml.Encoder,
start
xml.StartElement)
error
{
stringAllT
:=
v.State
+
"|"
+
v.City
+
"|"
+
v.Detail
+
"|"
+
v.PostalCode
+
"|"
+
v.remark
e.EncodeElement(stringAllT,
start)
return
nil}
func
(p
*AddressType)
UnmarshalXML(d
*xml.Decoder,
start
xml.StartElement)
error
{
var
stringBufT
string
d.DecodeElement(&stringBufT,
&start)
listT
:=
strings.Split(stringBufT,
"|")
*p
=
AddressType{State:
listT[0],
City:
listT[1],
Detail:
listT[2],
PostalCode:
listT[3],
remark:
listT[4]}
return
nil}定義在AddressType數(shù)據(jù)類型上目錄導(dǎo)航10.3JSON格式的處理ContentsJSON數(shù)據(jù)格式
JSON格式是數(shù)據(jù)交換格式中使用最廣泛的格式之一,雖然起源于JavaScript語(yǔ)言,但實(shí)際應(yīng)用中已經(jīng)完全實(shí)現(xiàn)了跨語(yǔ)言、跨平臺(tái)的使用JSON格式最大的特點(diǎn)就是寫法簡(jiǎn)單易懂,處理快速,并具備大多數(shù)主要基本數(shù)據(jù)類型的表達(dá)能力
Go語(yǔ)言中處理JSON格式的序列化和反序列化與XML相比要簡(jiǎn)單很多將數(shù)據(jù)序列化成JSON格式1//
AddressType
表示個(gè)人住址的數(shù)據(jù)結(jié)構(gòu)type
AddressType
struct
{
State
string
City
string
Detail
string
PostalCode
string
remark
string}
//
Person
表示個(gè)人信息的數(shù)據(jù)結(jié)構(gòu)類型type
Person
struct
{
Name
string
ID
string
Age
int
Married
bool
Phone
string
Mobile
[]string
height
float64
AddressType
SecondAddress
AddressType
Remark
string}數(shù)據(jù)結(jié)構(gòu)一般無(wú)需特別處理將數(shù)據(jù)序列化成JSON格式2person1
:=
&Person{Name:
"張三",
ID:
,
Age:
25,
Married:
false,
Mobile:
[]string{,
},
height:
170,
AddressType:
AddressType{State:
"中國(guó)",
City:
"北京",
Detail:
"海淀區(qū)中關(guān)村1號(hào)",
PostalCode:
"100099",
remark:
"路口右轉(zhuǎn)"},
SecondAddress:
AddressType{State:
"中國(guó)",
City:
"上海",
Detail:
"徐匯區(qū)南京路1號(hào)",
PostalCode:
"210001",
remark:
"無(wú)"},
Remark:
"信息有待完善"}
var
strT
strings.BuilderencoderT
:=
json.NewEncoder(&strT)errT
:=
encoderT.Encode(person1)if
errT
!=
nil
{}
t.Printfln("JSON字符串為:%#v",
strT.String())
outputT,
errT
:=
json.MarshalIndent(person1,
"
",
"
")if
errT
!=
nil
{}
os.Stdout.Write(outputT)t.SaveStringToFile(string(outputT),
`c:\test\person1.json`)將數(shù)據(jù)序列化成JSON格式3JSON字符串為:"{\"Name\":\"張三\",\"ID\":\",\"Age\":25,\"Married\":false,\"Phone\":\"\",\"Mobile\":[\",\"],\"State\":\"中國(guó)\",\"City\":\"北京\",\"Detail\":\"海淀區(qū)中關(guān)村1號(hào)\",\"PostalCode\":\"100099\",\"SecondAddress\":{\"State\":\"中國(guó)\",\"City\":\"上海\",\"Detail\":\"徐匯區(qū)南京路1號(hào)\",\"PostalCode\":\"210001\"},\"Remark\":\"信息有待完善\"}\n"
{"Name":"張三","ID":,"Age":25,"Married":false,"Phone":"","Mobile":[,],"State":"中國(guó)","City":"北京","Detail":"海淀區(qū)中關(guān)村1號(hào)","PostalCode":"100099","SecondAddress":{"State":"中國(guó)","City":"上海","Detail":"徐匯區(qū)南京路1號(hào)","PostalCode":"210001"},"Remark":"信息有待完善"}將JSON格式的文本反序列化decoderT
:=
json.NewDecoder(fileT)errT
=
decoderT.Decode(person1)if
errT
!=
nil
{}
t.Printfln("person1:%#v",
person1)
person2
:=
&Person{}
bytesT,
errT
:=
ioutil.ReadFile(`c:\test\person1.json`)if
errT
!=
nil
{}
errT
=
json.Unmarshal(bytesT,
person2)if
errT
!=
nil
{}
t.Printfln("person2:%#v",
person2)JSON序列化/反序列化時(shí)使用描述字符串type
Person
struct
{
Name
string
`json:"name"`
ID
string
Age
int
`json:",string"`
Married
bool
`json:",omitempty"`
Phone
string
Mobile
[]string
height
float64
`json:"height"`
AddressType
SecondAddress
AddressType
Remark
string
`json:"-"`}與XML類似,JSON也可以加描述字符串特殊說(shuō)明使用類似`json:"name"`的JSON序列化描述字符串,可以設(shè)置該字段在JSON中的鍵(key)名,這也可以突破不使用描述字符串時(shí)鍵名必須為大寫字母開頭的限制,這一點(diǎn)在解析網(wǎng)絡(luò)上很多JSON接口或文件時(shí)非常有用,因?yàn)槌薌o語(yǔ)言之外,很少有其他語(yǔ)言限制這一點(diǎn)
`json:",string"`這樣的描述字符串一般用于描述數(shù)字類型的字段,表示雖然該字段是數(shù)字,但是也按照字符串形式來(lái)編碼控制自定義數(shù)據(jù)類型的JSON序列化/反序列化func
(v
AddressType)
MarshalJSON()
([]byte,
error)
{
stringAllT
:=
v.State
+
"|"
+
v.City
+
"|"
+
v.Detail
+
"|"
+
v.PostalCode
+
"|"
+
v.remark
return
json.Marshal(stringAllT)}
func
(p
*AddressType)
UnmarshalJSON(b
[]byte)
error
{
var
stringBufT
string
errT
:=
json.Unmarshal(b,
&stringBufT)
if
errT
!=
nil
{
return
errT
}
listT
:=
strings.Split(stringBufT,
"|")
*p
=
AddressType{State:
listT[0],
City:
listT[1],
Detail:
listT[2],
PostalCode:
listT[3],
remark:
listT[4]}
return
nil}注意思考兩個(gè)函數(shù)為什么一個(gè)定義在值上,一個(gè)定義在引用上用空接口類型實(shí)現(xiàn)復(fù)雜結(jié)構(gòu)的JSON序列化map1T
:=
map[string]interface{}{
"Name":
"小明",
"Age":
11,
"Gender":
"男",
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南衛(wèi)生健康職業(yè)學(xué)院《商務(wù)智能》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧財(cái)貿(mào)學(xué)院《行政案例研討》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年山東省百校大聯(lián)考高三上學(xué)期12月月考?xì)v史試卷
- 吉林工業(yè)職業(yè)技術(shù)學(xué)院《媒介文化》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海科技大學(xué)《航海學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 欽州幼兒師范高等??茖W(xué)?!毒频攴?wù)營(yíng)銷》2023-2024學(xué)年第二學(xué)期期末試卷
- 黃淮學(xué)院《地理學(xué)基本問(wèn)題》2023-2024學(xué)年第二學(xué)期期末試卷
- 福建衛(wèi)生職業(yè)技術(shù)學(xué)院《小學(xué)文學(xué)與媒體教育》2023-2024學(xué)年第二學(xué)期期末試卷
- 集寧師范學(xué)院《跨境電子商務(wù)實(shí)務(wù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江工業(yè)大學(xué)之江學(xué)院《管理心理學(xué)D1》2023-2024學(xué)年第二學(xué)期期末試卷
- 化工原理傳質(zhì)導(dǎo)論
- 環(huán)境與可持續(xù)發(fā)展ppt課件(完整版)
- Linux操作系統(tǒng)課件(完整版)
- 跨境電商亞馬遜運(yùn)營(yíng)實(shí)務(wù)完整版ppt課件-整套課件-最全教學(xué)教程
- 中國(guó)傳媒大學(xué)《當(dāng)代電視播音主持教程》課件
- 浙美版小學(xué)六年級(jí)美術(shù)下冊(cè)全冊(cè)精品必備教學(xué)課件
- DB32∕T 4245-2022 城鎮(zhèn)供水廠生物活性炭失效判別和更換標(biāo)準(zhǔn)
- 建設(shè)工程圍擋標(biāo)準(zhǔn)化管理圖集(2022年版)
- 人教版七年級(jí)上冊(cè)歷史課程綱要
- 濕法冶金簡(jiǎn)介
- 2022新教科版六年級(jí)科學(xué)下冊(cè)全一冊(cè)全部教案(共28節(jié))
評(píng)論
0/150
提交評(píng)論