ฉันทำงานกับ Java ด้วย XML และฉันก็สงสัย ความแตกต่างระหว่างองค์ประกอบและโหนดคืออะไร?
ฉันทำงานกับ Java ด้วย XML และฉันก็สงสัย ความแตกต่างระหว่างองค์ประกอบและโหนดคืออะไร?
คำตอบ:
วัตถุโหนดเป็นชนิดข้อมูลหลักสำหรับ DOM ทั้งหมด
โหนดสามารถเป็นองค์ประกอบโหนดโหนดแอตทริบิวต์โหนดข้อความหรืออื่น ๆ ของประเภทโหนดที่อธิบายไว้ในบท "ประเภทโหนด"
องค์ประกอบ XML คือทุกอย่างตั้งแต่ (รวมถึง) แท็กเริ่มต้นขององค์ประกอบไปจนถึง (รวมถึง) แท็กสิ้นสุดขององค์ประกอบ
ข้อมูลจำเพาะ W3C ที่แตกต่างกันกำหนดประเภท "โหนด" ที่แตกต่างกัน
ดังนั้นข้อมูลจำเพาะ DOM จะกำหนดประเภทของโหนดต่อไปนี้:
Document
- Element
(สูงสุดหนึ่ง) ProcessingInstruction
,
Comment
,DocumentType
DocumentFragment
- Element
, ProcessingInstruction
,
Comment
, Text
, CDATASection
,EntityReference
DocumentType
-- ไม่มีลูก
EntityReference
- Element
, ProcessingInstruction
,
Comment
, Text
, CDATASection
,EntityReference
Element
- Element
, Text
, Comment
, ProcessingInstruction
,
CDATASection
,EntityReference
Attr
- Text
,EntityReference
ProcessingInstruction
-- ไม่มีลูก
Comment
-- ไม่มีลูก
Text
-- ไม่มีลูก
CDATASection
-- ไม่มีลูก
Entity
- Element
, ProcessingInstruction
,
Comment
, Text
, CDATASection
,EntityReference
Notation
-- ไม่มีลูก XML Infoset (ใช้ XPath) มีชุดเล็กของโหนด:
XPath มีชนิดของโหนดต่อไปนี้:
คำตอบสำหรับคำถามของคุณ " ความแตกต่างระหว่างองค์ประกอบและโหนด " คืออะไร:
An element is a type of node. Many other types of nodes exist and serve different purposes.
โหนดเป็นส่วนหนึ่งของต้นไม้ DOM องค์ประกอบเป็นชนิดเฉพาะของโหนด
เช่น
<foo> This is Text </foo>
คุณมีองค์ประกอบ foo (ซึ่งเป็นโหนดด้วยเนื่องจากองค์ประกอบสืบทอดมาจากโหนด) และโหนดข้อความ 'This is Text' ซึ่งเป็นลูกของ foo Element / Node
โหนดสามารถเป็นสิ่งต่าง ๆ จำนวนมาก: ข้อความความคิดเห็นองค์ประกอบองค์ประกอบเอนทิตี้ ฯลฯ องค์ประกอบคือโหนดชนิดใดชนิดหนึ่งโดยเฉพาะ
ตามที่อธิบายไว้ใน XML ต่างๆข้อกำหนดการelement
เป็นที่ซึ่งประกอบด้วยแท็กเริ่มต้นและแท็กสิ้นสุดและเนื้อหาในระหว่างหรือสลับกันแท็กองค์ประกอบที่ว่างเปล่า (ซึ่งมีเนื้อหาหรือไม่มีที่สิ้นสุดแท็ก) กล่าวคือองค์ประกอบเหล่านี้ทั้งหมด:
<foo> stuff </foo>
<foo bar="baz"></foo>
<foo baz="qux" />
แม้ว่าคุณจะได้ยิน "โหนด" ที่ใช้กับความหมายเดียวกันโดยประมาณ แต่ก็ไม่มีคำจำกัดความที่แม่นยำตามข้อกำหนด XML โดยปกติจะใช้เพื่ออ้างถึงโหนดของสิ่งต่าง ๆ เช่น DOMs ซึ่งอาจเกี่ยวข้องกับ XML หรือใช้ XML เพื่อเป็นตัวแทนของพวกเขา
เอกสาร xml ทำจากองค์ประกอบซ้อนกัน องค์ประกอบของมันเริ่มต้นที่แท็กเปิดและสิ้นสุดที่ดีแท็กปิด คุณอาจเห็น<body>
และเป็น</body>
html ทุกอย่างระหว่างการเปิดและปิดแท็กเป็นองค์ประกอบของเนื้อหา หากองค์ประกอบถูกกำหนดโดยแท็กปิดตัวเอง (เช่น<br/>
) เนื้อหานั้นจะว่างเปล่า
การเปิดแท็กยังสามารถระบุแอตทริบิวต์ได้เช่น <p class="rant">
. ในตัวอย่างนี้ชื่อคุณลักษณะคือ 'class' และค่า 'rant'
ภาษา XML ไม่มีสิ่งดังกล่าวเป็น 'โหน' อ่านข้อมูลจำเพาะคำไม่เกิดขึ้น
บางคนใช้คำว่า 'โหนด' อย่างไม่เป็นทางการเพื่อหมายถึงองค์ประกอบซึ่งทำให้เกิดความสับสนเนื่องจากตัวแยกคำบางคำยังให้ความหมายทางเทคนิค (ระบุ 'โหนดข้อความ' และ 'โหนดองค์ประกอบ') ความหมายที่แท้จริงนั้นขึ้นอยู่กับตัวแยกวิเคราะห์ดังนั้นคำจะถูกกำหนดอย่างไม่ดีเว้นแต่คุณจะระบุสิ่งที่คุณใช้แยกวิเคราะห์ หากคุณองค์ประกอบหมายถึงพูดว่า 'องค์ประกอบ'
โหนดเป็นคลาสพื้นฐานสำหรับทั้งองค์ประกอบและคุณสมบัติ (และโดยทั่วไปแล้วการเป็นตัวแทน XML อื่นทั้งหมดด้วย)
องค์ประกอบเป็นโหนดชนิดเดียวที่สามารถมีโหนดลูกและคุณลักษณะ
เอกสารยังมีโหนดลูก แต่
ไม่มีแอตทริบิวต์ไม่มีข้อความองค์ประกอบลูกหนึ่งรายการ
โหนดถูกกำหนดเป็น:
หน่วยที่เล็กที่สุดของโครงสร้างที่สมบูรณ์และถูกต้องในเอกสาร
หรือเป็น:
วัตถุในมุมมองแบบต้นไม้ที่ทำหน้าที่เป็นคอนเทนเนอร์เพื่อเก็บวัตถุที่เกี่ยวข้อง
ตอนนี้มันมีหลายชนิดของโหนดเป็นโหนดองค์ประกอบ, โหนดคุณสมบัติเป็นต้น
ตอนนี้ฉันรู้แล้วองค์ประกอบคือหนึ่งในโหนด
โหนดทุกประเภทมาที่นี่ " http://www.w3schools.com/dom/dom_nodetype.asp "
องค์ประกอบอยู่ระหว่างแท็กเริ่มต้นและสิ้นสุดในแท็กสิ้นสุด
ดังนั้นโหนดข้อความจึงเป็นโหนด แต่ไม่ใช่องค์ประกอบ
องค์ประกอบเป็นชนิดของโหนดเช่นเดียวกับแอตทริบิวต์ข้อความ ฯลฯ
องค์ประกอบ XML เป็นโหนด XML แต่มีองค์ประกอบเพิ่มเติมเช่นแอตทริบิวต์
<a>Lorem Ipsum</a> //This is a node
<a id="sample">Lorem Ipsum</a> //This is an element
โหนดและองค์ประกอบเหมือนกัน ทุกองค์ประกอบเป็นโหนด แต่ไม่ใช่ว่าทุกโหนดจะต้องเป็นองค์ประกอบ