第4章 XML數(shù)據(jù)接口DOM_第1頁
第4章 XML數(shù)據(jù)接口DOM_第2頁
第4章 XML數(shù)據(jù)接口DOM_第3頁
第4章 XML數(shù)據(jù)接口DOM_第4頁
第4章 XML數(shù)據(jù)接口DOM_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、XML文檔對象模型(文檔對象模型(XML Document Object Model)定義了一種訪問)定義了一種訪問和處理和處理XML文檔的標準方法。文檔的標準方法。什么是什么是XML DOM?XML DOM是針對是針對XML的文檔對象模型(的文檔對象模型(Document Object Model) XML DOM獨立于平臺和語言獨立于平臺和語言 XML DOM定義了一套標準的用于定義了一套標準的用于XML的對象的對象 XML DOM定義一種標準的訪問定義一種標準的訪問XML文檔的方法文檔的方法 XML DOM定義了一種標準的處理定義了一種標準的處理XML文檔的方法文檔的方法 XML DOM

2、是一個是一個W3C標準標準 節(jié)點節(jié)點根據(jù)根據(jù)DOM,XML文檔中的每各成分都是一個節(jié)點。文檔中的每各成分都是一個節(jié)點。DOM是這樣規(guī)定的:是這樣規(guī)定的:整個文檔是一個文檔節(jié)點整個文檔是一個文檔節(jié)點 每個每個XML標簽是一個元素節(jié)點標簽是一個元素節(jié)點 包含在包含在XML元素中的文本是文本節(jié)點元素中的文本是文本節(jié)點 每一個每一個XML屬性是一個屬性節(jié)點屬性是一個屬性節(jié)點 注釋屬于注釋節(jié)點注釋屬于注釋節(jié)點 Node 層次層次節(jié)點彼此都有等級關(guān)系。XML文檔中的所有節(jié)點組成了一個文檔樹(或節(jié)點樹)。XML文檔中的每個元素、屬性、文本等都代表著樹中的一個節(jié)點。樹起始于文檔節(jié)點,并由此繼續(xù)伸出枝條,直到處

3、于這棵樹最低級別的所有文本節(jié)點為止。 術(shù)語“父”和“子”被用來描述節(jié)點間的關(guān)系。某些節(jié)點擁有子節(jié)點,而另一些節(jié)點沒有子節(jié)點(或稱葉節(jié)點)。由于XML數(shù)據(jù)被組織在樹結(jié)構(gòu)中,所以可在不確定樹的具體結(jié)構(gòu)以及其中所包含的數(shù)據(jù)類型的情況下,對XML數(shù)據(jù)進行遍歷。DOM節(jié)點層次范例此XML文檔中的根元素被命名為。所有此文檔中的其余的元素都被包含在內(nèi)部。元素代表DOM樹的根節(jié)點。節(jié)點擁有四個子節(jié)點。第一個子節(jié)點也含有四個子節(jié)點:、以及,它們各自只包含著文本,Everyday Italian、Giada De Laurentiis、2005以及30.00。 這幅圖展示了來自上面這個XML文檔的DOM節(jié)點樹的一

4、個片段: 一個節(jié)點樹中的所有節(jié)點彼此都是有關(guān)系的。一個節(jié)點樹中的所有節(jié)點彼此都是有關(guān)系的。什么是節(jié)點樹?什么是節(jié)點樹?一個節(jié)點樹可以把一個一個節(jié)點樹可以把一個XML文檔展示為一個節(jié)點集,以及文檔展示為一個節(jié)點集,以及它們之間的連接。它們之間的連接。在一個節(jié)點樹中,最頂端的節(jié)點被稱為根在一個節(jié)點樹中,最頂端的節(jié)點被稱為根 每一個節(jié)點,除根之外,都擁有父節(jié)點每一個節(jié)點,除根之外,都擁有父節(jié)點 一個節(jié)點可以有無限的子一個節(jié)點可以有無限的子 結(jié)點結(jié)點葉是無子結(jié)點的節(jié)點葉是無子結(jié)點的節(jié)點 同級節(jié)點指擁有相同的父的節(jié)點同級節(jié)點指擁有相同的父的節(jié)點 這幅圖向我們展示了節(jié)點樹的一個部分,以及上面這個XML文件

5、中節(jié)點間的關(guān)系。 查找并訪問節(jié)點你可通過若干種方法來查找您希望操作的元素:通過使用getElementsByTagName()方法 通過使用一個元素節(jié)點的parentNode、firstChild以及l(fā)astChild屬性 getElementsByTagName()getElementsByTagName()方法可在整個文檔中查找任何XML元素。此方法會忽略文檔的結(jié)構(gòu)。假如你文檔中所有元素,getElementsByTagName()方法會全部找出它們,不管這些元素位于哪個級別。就是說,這個方法會給您任何您所需要的XML元素,不論它們所處的位置!getElementsByTagName()方

6、法會使用指定的標簽名返回所有的元素(作為一個節(jié)點列表),這些元素是在使用此方法時所處的元素的后代。getElementsByTagName() 語法語法getElementsByTagName(tagname); 例子例子下面這個例子會返回文檔中所有元素的一個節(jié)點列表: xmlDoc.getElementsByTagName(book); 點列表點列表當使用某個節(jié)點列表時,我們通常會把此列表存儲在一個變量中,就像這樣: var x=xmlDoc.getElementsByTagName(book); 現(xiàn)在,變量x包含著頁面中所有元素的一個列表,并且我們可通過它們的索引號來訪問這些元素。 注釋:

7、索引起始于0。 您可以通過使用length屬性來循環(huán)遍歷節(jié)點列表: var x=xmlDoc.getElementsByTagName(book); for (var i=0;ix.length;i+) / do something with each element 您也可以通過使用索引號來訪問某個具體的元素。 要訪問第三個元素,您可以這樣寫: var y=x2; parentNode、firstChild以及以及l(fā)astChild屬性parentNode、firstChild以及l(fā)astChild會遵循文檔的結(jié)構(gòu),可在文檔中繼續(xù)進行短距離的旅行。請看下面的XML片段: Everyday I

8、talian Giada De Laurentiis 2005 30.00 在上面的XML代碼中,元素是元素的首個子元素(firstChild),元素是元素的最后一個子元素(lastChild)同時,元素是、以及元素的父節(jié)點(parentNode)根節(jié)點根節(jié)點有一個特殊的文檔屬性可用來訪問這些標簽:document.documentElement 節(jié)點信息節(jié)點信息每個節(jié)點都擁有包含著關(guān)于節(jié)點某些信息的屬性。這些屬性是:nodeName(節(jié)點名稱) nodeValue(節(jié)點值) nodeType(節(jié)點類型) nodeNamenodeName屬性含有節(jié)點的名稱。元素節(jié)點的nodeName是標簽名稱

9、 屬性節(jié)點的nodeName是屬性名稱 文本節(jié)點的nodeName永遠是#text 文檔節(jié)點的nodeName永遠是#document 注釋:nodeName所包含的XML元素的標簽名稱永遠是大寫的。nodeValue對于文本節(jié)點,nodeValue屬性包含文本。對于屬性節(jié)點,nodeValue屬性包含屬性值。nodeValue屬性對于文檔節(jié)點和元素節(jié)點是不可用的。nodeTypenodeType屬性可返回節(jié)點的類型。最重要的節(jié)點類型是:最重要的節(jié)點類型是:元素類型元素類型 節(jié)點類型節(jié)點類型元素1屬性2文本3注釋8文檔9DOM Node List當我們使用類似childNodes或getEle

10、mentsByTagName()之類的屬性或方法時,就會收到一個NodeList對象。NodeList對象代表一個有序的節(jié)點列表??赏ㄟ^它們的索引號碼(由0起始)來訪問節(jié)點列表中的這些節(jié)點。注釋:在一個節(jié)點列表中,其中的節(jié)點是按照它們在XML中被規(guī)定的順序來返回的。下面這個XML文件:books.xml現(xiàn)在,通過使用方法getElementsByTagName(title),來創(chuàng)建一個books.xml中所有元素的節(jié)點列表。下面這幅圖表示所返回的節(jié)點列表:下面這個代碼片段可從第一個元素中取得文本:getElementsByTagName(title)0.childNodes0.nodeValu

11、e 輸出:Everyday Italian 取得節(jié)點列表的長度取得節(jié)點列表的長度節(jié)點列表可保持其自身的更新。如果某個元素被刪除或添加,那么列表會自動更新。節(jié)點列表有一個很有用的屬性:length。length屬性可返回某個節(jié)點列表中的節(jié)點數(shù)目。下面的代碼片段可取得books.xml中元素的數(shù)目:getElementsByTagName(title).length 輸出:4 當您了解到某個節(jié)點列表的長度后,就可以輕易地循環(huán)遍歷這個列表,并提取您需要的值。下面的代碼片段循環(huán)遍歷所有的元素,并輸出它們的值:/the x variable will hold a NodeList var x=getE

12、lementsByTagName(title)for (i=0;ix.length;i+) document.write(xi.childNodes0.nodeValue) document.write() 輸出:Everyday Italian Harry Potter XQuery Kick Start Learning XML DOM NamedNodeMap當我們對某個元素使用attributes屬性時,就會收到一個NamedNodeMap對象。一個NamedNodeMap代表了屬性節(jié)點的一個無序列表??赏ㄟ^節(jié)點名稱訪問NamedNodeMap中的節(jié)點。注釋:在一個NamedNodeM

13、ap中,節(jié)點不會以任何特別的順序返回。取得取得NamedNodeMap的長度的長度NamedNodeMap會保持自身的更新。如果某個元素被刪除或添加,此列表也會被自動更新。NamedNodeMap也擁有l(wèi)ength屬性。length屬性可返回列表中的節(jié)點數(shù)目。請看下面這個XML文件:books.xml下面的這個代碼片段可取得books.xml中第一個元素的屬性數(shù)目:getElementsByTagName(title)0.attributes.length 輸出:1 取得取得NamedNodeMap中某個項目的值中某個項目的值NamedNodeMap對象的getNamedItem()方法可被用

14、來取回某個指定的節(jié)點。下面的代碼片段向我們展示了如何輸出每個元素中category屬性的值:xmlDoc=loadXMLDoc(books.xml); var x=xmlDoc.getElementsByTagName(book); for(i=0;ix.length;i+) /the attlist variable will hold a NamedNodeMap var attlist=x.item(i).attributes; var att=attlist.getNamedItem(category); document.write(att.value + ) 輸出:COOKING

15、CHILDREN WEB WEB 如需讀取、更新、創(chuàng)建或者操作某個XML文檔,則需要XML解析器。解析一個XML文檔如需操作某個XML文檔,您需要XML解析器。解析器會將文檔載入電腦的內(nèi)存中。一旦文檔被載入,可使用DOM對其數(shù)據(jù)進行操作。DOM把XML作為一顆樹來處理。微軟的XML解析器微軟的XML解析器是存在于IE 5.0或更高版本中的COM組件。一旦你安裝了IE,就可使用腳本來利用解析器了。微軟的XML解析器支持所有必要的功能,來遍歷節(jié)點樹,訪問節(jié)點以及它們的屬性值,插入并刪除節(jié)點,并將節(jié)點數(shù)轉(zhuǎn)換回XML。如需創(chuàng)建微軟XML解析器的一個實例,請使用下面的代碼:JavaScript:var

16、xmlDoc=new ActiveXObject(Microsoft.XMLDOM); VBScript:set xmlDoc=CreateObject(Microsoft.XMLDOM) ASP:set xmlDoc=Server.CreateObject(Microsoft.XMLDOM) 下面的代碼段可向微軟的XML解析器載入一個已有的XML文檔(note.xml):var xmlDoc=new ActiveXObject(Microsoft.XMLDOM); xmlDoc.async=false; xmlDoc.load(note.xml); 上面的腳本的第一行創(chuàng)建了XML解析器的一個

17、實例。第二行關(guān)閉了同步載入,這樣可以確保在文檔被完全載入前解析器不會繼續(xù)執(zhí)行。第三行會告知解析器載入名為note.xml的XML的文檔。例8.1,8.2遍歷節(jié)點樹遍歷節(jié)點樹您常常會需要循環(huán)遍歷XML文檔中的元素。 下面的例子可循環(huán)遍歷的所有子元素,并輸出每個節(jié)點的節(jié)點名以及節(jié)點值:例8.3DOM 節(jié)點導航節(jié)點導航我們可以通過使用節(jié)點彼此間的關(guān)系在節(jié)點間進行導航:parentNode childNodes firstChild lastChild nextSibling previousSibling 下面這幅圖展示了節(jié)點樹的一個部分,以及上面這個XML文件中節(jié)點間的關(guān)系: 取得節(jié)點的首個子元素

18、取得節(jié)點的首個子元素下面的代碼片段可取得的首個子節(jié)點:/檢測首個子節(jié)點是否是元素節(jié)點 function get_firstchild(n) var x=n.firstChild; while (x.nodeType!=1) x=x.nextSibling; return x; xmlDoc=load(books.xml); var y=get_firstchild(xmlDoc.documentElement); document.write(y.nodeName); 以上代碼的輸出:book 這個例子中的函數(shù)可檢測第一個子節(jié)點的節(jié)點類型。 元素節(jié)點的節(jié)點類型是1,因此如果首個子節(jié)點不是元素節(jié)

19、點,它就會移至下一節(jié)點并檢查此節(jié)點是否是元素節(jié)點。這個過程會持續(xù)到首個元素被找到為止。取得節(jié)點的前一個同級節(jié)點取得節(jié)點的前一個同級節(jié)點下面這個代碼片段會取得第一個 元素的前一個同級節(jié)點:/check if the previous sibling node is an element node function get_previoussibling(n) var x=n.previousSibling; while (x.nodeType!=1) x=x.previousSibling; return x; xmlDoc=load(books.xml); var x=xmlDoc.getEl

20、ementsByTagName(author)0; var y=get_previoussibling(x); document.write(y.nodeName); 以上代碼的輸出:title 這個例子中的函數(shù)可檢測前一個同級節(jié)點的節(jié)點類型。 假如前一個同級節(jié)點不是一個元素節(jié)點,它就會移至下一個前面的同級節(jié)點,并檢查此節(jié)點是否是元素節(jié)點。這個過程會持續(xù)到前一個同級的元素節(jié)點被找到為止。取得某個元素的值取得某個元素的值getElementsByTagname()方法可返回一個節(jié)點列表,其中包含著所有通過指定標簽名找到的元素,這些元素的排列順序與它們在源文檔中出現(xiàn)的順序相同。例8.4 使用get

21、ElementsByTagname()方法來取得books.xml中所有title元素的值。 取得某個屬性的值取得某個屬性的值getAttribute()方法可被用來顯示某個屬性的值。例8.5 使用getAttribute()方法來取得“books.xml”中所有“category”屬性的值。 取得某個項目的值取得某個項目的值getNamedItem()方法可被用來找回某個指定的節(jié)點。例8.6 用getNamedItem()方法來取得books.xml中所有category屬性的值。 設(shè)置一個新的屬性以及屬性值設(shè)置一個新的屬性以及屬性值setAttribute()方法可被用來改變現(xiàn)有屬性的值,

22、或者為某個元素創(chuàng)新一個新的屬性/屬性值。例8.7 使用setAttribute()來設(shè)置新的屬性/屬性值。另一種創(chuàng)建新屬性的方法另一種創(chuàng)建新屬性的方法createAttribute()可被用來創(chuàng)建一種新的屬性節(jié)點。 例8.8 使用createAttribute()來創(chuàng)建一個新的屬性節(jié)點,并使用setAttributeNode()將此節(jié)點插入一個元素中。 改變一個屬性值改變一個屬性值setAttribute()方法可被用來改變某個現(xiàn)有屬性的值,或者為一個元素創(chuàng)建一個新的屬性/屬性值。例8.9 使用setAttribute()方法來改變現(xiàn)有屬性的值。 改變一個項目的值改變一個項目的值getName

23、dItem()方法可被用來改變某個現(xiàn)有項目的值。例8.10 使用getNamedItem()方法來改變現(xiàn)有屬性的值。 刪除某個元素刪除某個元素removeChild()可被用來刪除某個指定的節(jié)點。例8.11 使用 removeChild()從載入的XML中刪除最后一個元素。 從元素刪除文本從元素刪除文本deleteData()方法被用來從文本節(jié)點刪除數(shù)據(jù)。deleteData()方法有兩個參數(shù):方法有兩個參數(shù):offset - 從何處開始刪除字符。偏移量的起始值是0 count - 刪除多少字符 例8.12 使用deleteData()從已載入的XML中的一個文本節(jié)點刪除文本。 刪除屬性刪除屬

24、性removeAttribute()方法被用來刪除屬性節(jié)點。根據(jù)屬性名。例8.13 使用removeAttribute()從已載入的XML中刪除所有的“category”屬性。removeAttributeNode()removeAttributeNode()方法被用來刪除某個屬性節(jié)點。根據(jù)對象。例8.14 使用removeAttributeNode()從已載入的XML中刪除所有的category屬性。 替換節(jié)點列表中的某個節(jié)點替換節(jié)點列表中的某個節(jié)點replaceChild()方法被用來替換節(jié)點列表中的某個節(jié)點。例8.15 使用replaceChild()來替換節(jié)點列表中的最后一個子節(jié)點。

25、替換文本節(jié)點中的數(shù)據(jù)替換文本節(jié)點中的數(shù)據(jù)replaceData()方法被用來替換文本節(jié)點中的數(shù)據(jù)。replaceData()方法有三個參數(shù):方法有三個參數(shù):offset - 從何處開始替換字符。偏移量的起始值為0 length - 替換多少字符 string - 要插入的字符串 例8.16 使用replaceData()來替換文本節(jié)點中的數(shù)據(jù)。 創(chuàng)建一個元素創(chuàng)建一個元素createElement()方法可創(chuàng)建一個新的元素節(jié)點。例8.17 使用createElement()來創(chuàng)建一個新的元素節(jié)點,并使用appendChild()將此節(jié)點添加到一個節(jié)點列表中。 創(chuàng)建一個屬性創(chuàng)建一個屬性create

26、Attribute()可創(chuàng)建一個新的屬性節(jié)點。例8.18 使用createAttribute()來創(chuàng)建一個新的屬性節(jié)點,并使用setAttributeNode()將此節(jié)點插入一個元素中。 創(chuàng)建一個文本節(jié)點創(chuàng)建一個文本節(jié)點createTextNode()方法可創(chuàng)建一個新的文本節(jié)點。例8.19 使用createTextNode()來創(chuàng)建一個文本節(jié)點,并使用appendChild()將此節(jié)點添加到一個節(jié)點列表中。創(chuàng)建一個創(chuàng)建一個CDATA Section節(jié)點節(jié)點createCDATASection()方法可創(chuàng)建一個新的CDATA Section節(jié)點。 例8.20 使用createCDATAsecti

27、on()來創(chuàng)建一個CDATA section節(jié)點,并使用appendChild()將此節(jié)點添加到一個節(jié)點列表中。 創(chuàng)建一個注釋節(jié)點創(chuàng)建一個注釋節(jié)點createComment()方法可創(chuàng)建一個新的注釋節(jié)點。例8.21 使用createComment()來創(chuàng)建一個注釋節(jié)點,并使用appendChild()將此節(jié)點添加到一個節(jié)點列表中。 向一個節(jié)點列表的末尾添加一個節(jié)點向一個節(jié)點列表的末尾添加一個節(jié)點appendChild()方法可用來在某個特定的節(jié)點之后添加一個節(jié)點。此方法在被添加節(jié)點的位置不很重要的情況下是很有用的。例8.22 使用createElement()來創(chuàng)建一個新的元素,并使用appe

28、ndChild()將此節(jié)點添加到一個節(jié)點列表。在某個特定的節(jié)點之前插入節(jié)點在某個特定的節(jié)點之前插入節(jié)點insertBefore()可用來在某個特定的節(jié)點之前插入一個節(jié)點。此方法在被添加節(jié)點的位置很重要的情況下是很有用的。例8.23 使用createElement()來創(chuàng)建一個新的元素,并使用insertBefore()將此節(jié)點插入到特定的節(jié)點之前。設(shè)置新的屬性和屬性值設(shè)置新的屬性和屬性值setAttribute()方法可被用來改變已有屬性的值,或者為某個元素創(chuàng)建新的屬性/屬性值。注釋:假如“edition”屬性已存在,setAttribute()方法將重寫此屬性的值。例8.24 使用setAt

29、tribute()方法來設(shè)置新的屬性/屬性值。 向某個文本節(jié)點插入數(shù)據(jù)向某個文本節(jié)點插入數(shù)據(jù)insertData()方法可用來向某個文本節(jié)點插入數(shù)據(jù)。insertData()方法有兩個參數(shù):方法有兩個參數(shù):offset - 從何處開始插入字符。偏移量的起始值是0 string - 要插入的字符串 例8.25 使用insertData()向一個文本節(jié)點插入數(shù)據(jù)。 復制節(jié)點復制節(jié)點cloneNode()方法可創(chuàng)建一個指定節(jié)點的備份。cloneNode()方法有一個參數(shù)(true 或 false)。此參數(shù)可指示被克隆節(jié)點是否應包括原節(jié)點的所有屬性和子節(jié)點。例8.26 使用cloneNode()來復制

30、節(jié)點,并把它添加到一個節(jié)點列表。 在載入及驗證XML數(shù)據(jù)的過程中,可能會由于不同的原因而拋出錯誤。例如:外部的XML文件找不到,或者XML的格式不正確,驗證出錯等。為了處理這些情況,MSXML提供了一個包含錯誤信息的對象parseError對象。用戶可以通過parseError對象提供的與整數(shù)0進行比較的errorCode屬性來檢查錯誤。最有當errorCode為0時才表示沒有錯誤發(fā)生。例:var sXml=“Jeremy McPeak”;var oXmlDom=new ActiveXObject(“Msxml2.DOMDocument.4.0”);oXmlDom.load(sXml);if(

31、oXmlDom.parseError.errorCode!=0) alert(“An Error Occurred: “+oXmlDom.parseError.reason);else /當載入XML數(shù)據(jù)成功后parseError對象提供了一下屬性,能夠幫助人們更好的理解錯誤:errorCode:錯誤代碼(長整型);filePos:在文件中發(fā)生錯誤的位置(長整型);line:包含錯誤的代碼行的行號(長整型);position:在特定行中發(fā)生錯誤的位置(長整型);reason:錯誤的原因(字符串型);srcText:發(fā)生錯誤的代碼行內(nèi)容(字符串型);url:XML文檔的URL(字符串型)。人們可

32、以使用XML DOM對象中的DOMDocument對象和IXMLDOMParseError對象來驗證XML文檔對于DTD內(nèi)容的有效性。例11-4可以使用MSXml提供的XML DOM對象來驗證XML文檔對于XML模式的有效性。用到一個很重要的XML DOM對象XMLSchemaCache對象。XMLSchemaCache對象常用的方法如下:add(namespaceURI,variable):添加一個新模式到模式集中,并把特定的命名空間與模式相關(guān)聯(lián)。addCollection(XMLSchemaCollection object):添加其他的模式集到XMLSchemaCache對象中,保證不同

33、模式的命名空間不會沖突。Get(namespaceURI):該方法返回含有元素的節(jié)點。namespaseURI(index number):該方法刪除模式集中的指定模式。XMLSchemaCache對象有一個屬性length,該屬性返回包含在模式集中模式的個數(shù)。創(chuàng)建XMLSchemaCache對象的代碼:var xsdSchemacache=new ActiveXObjet(“Msxml2.XMLSchemaCache.4.0”);/創(chuàng)建DOMDocument對象實體var xmldoc=new ActiveXObject(“Msxml2.FreeThreadedDOMDocument.4.0”);xmldoc.validateOnParse=true;xmldoc.load(“要驗證的XML文檔”);創(chuàng)建了各種對象的實例并載入DOMDocument對象中后,需要把模式與XML文檔相關(guān)聯(lián)。因此需要添加一個新模式到XMLSchemaCache對象中。var namespace=spaceURI;xsdSchemacache.add(namespace,”要關(guān)聯(lián)的模式文件”);例11-5使用XML DOM,可以對XML文檔中的數(shù)據(jù)進行讀、寫、修改等操作。人們也可以借助XML

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論