Class Element

องค์ประกอบ

การแสดงโหนด XML Element

// Adds up the values listed in a sample XML document and adds a new element
// with the total.
let xml = '<things>' +
    '<plates>12</plates>' +
    '<bowls>18</bowls>' +
    '<cups>25</cups>' +
    '</things>';
const document = XmlService.parse(xml);
const root = document.getRootElement();
const items = root.getChildren();
let total = 0;
for (let i = 0; i < items.length; i++) {
  total += Number(items[i].getText());
}
const totalElement = XmlService.createElement('total').setText(total);
root.addContent(totalElement);
xml = XmlService.getPrettyFormat().format(document);
Logger.log(xml);

เมธอด

วิธีการประเภทการแสดงผลรายละเอียดแบบย่อ
addContent(content)Elementผนวกโหนดที่ระบุเป็นโหนดสุดท้ายของโหนด Element
addContent(index, content)Elementแทรกโหนดที่ระบุที่ดัชนีที่ระบุในบรรดาโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงของโหนด Element
cloneContent()Content[]สร้างสำเนาที่ไม่ได้แนบของโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงของโหนด {@code Element}
detach()Content|nullยกเลิกการเชื่อมต่อโหนดจากโหนดระดับบนสุด Element
getAllContent()Content[]รับโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงของโหนด {@code Element}
getAttribute(name)Attribute|nullรับแอตทริบิวต์สำหรับโหนด Element นี้ที่มีชื่อที่ระบุและไม่มีเนมสเปซ
getAttribute(name, namespace)Attribute|nullรับแอตทริบิวต์สำหรับโหนด Element นี้ที่มีชื่อและเนมสเปซที่ระบุ
getAttributes()Attribute[]รับแอตทริบิวต์ทั้งหมดสำหรับโหนด Element นี้ตามลำดับที่ปรากฏในเอกสาร
getChild(name)Element|nullรับElementโหนดแรกที่มีชื่อที่ระบุและไม่มีเนมสเปซซึ่งเป็นองค์ประกอบย่อย โดยตรงของElementโหนดนี้
getChild(name, namespace)Element|nullรับโหนด Element แรกที่มีชื่อและเนมสเปซที่ระบุซึ่งเป็นบุตรElement ของโหนดนี้
getChildText(name)String|nullรับค่าข้อความของโหนดที่มีชื่อที่ระบุและไม่มีเนมสเปซ หากโหนดเป็น โหนดลูกโดยตรงของโหนด Element
getChildText(name, namespace)String|nullรับค่าข้อความของโหนดที่มีชื่อและเนมสเปซที่ระบุ หากโหนดเป็นองค์ประกอบย่อยโดยตรงของโหนด Element
getChildren()Element[]รับโหนด Element ทั้งหมดที่เป็นโหนดลูกของโหนด Element นี้ใน ลำดับที่ปรากฏในเอกสาร
getChildren(name)Element[]รับโหนด Element ทั้งหมดที่มีชื่อที่ระบุและไม่มีเนมสเปซซึ่งเป็นองค์ประกอบย่อยโดยตรง ของโหนด Element นี้ตามลำดับที่ปรากฏในเอกสาร
getChildren(name, namespace)Element[]รับโหนด Element ทั้งหมดที่มีชื่อและเนมสเปซที่ระบุซึ่งเป็นโหนดย่อยโดยตรงของ โหนด Element นี้ ตามลำดับที่ปรากฏในเอกสาร
getContent(index)Content|nullรับโหนดที่ดัชนีที่ระบุในบรรดาโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงของโหนด {@code Element}
getContentSize()Integerรับจำนวนโหนดที่เป็นโหนดย่อยโดยตรงของโหนด {@code Element}
getDescendants()Content[]รับโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงหรือโดยอ้อมของโหนด {@code Element} ตามลำดับที่ปรากฏในเอกสาร
getDocument()Documentรับเอกสาร XML ที่มีโหนด {@code Element}
getName()Stringรับชื่อในพื้นที่ของโหนด Element
getNamespace()Namespaceรับเนมสเปซสำหรับโหนด Element
getNamespace(prefix)Namespaceรับเนมสเปซที่มีคำนำหน้าที่ระบุสำหรับโหนด Element
getParentElement()Element|nullรับโหนดแม่ของโหนด Element
getQualifiedName()Stringรับชื่อในเครื่องและคำนำหน้าเนมสเปซของโหนด Element ในรูปแบบ [namespacePrefix]:[localName]
getText()Stringรับค่าข้อความของโหนด Element
getValue()Stringรับค่าข้อความของโหนดทั้งหมดที่เป็นโหนดลูกโดยตรงหรือโดยอ้อมของโหนด ตามลำดับ ที่ปรากฏในเอกสาร
isAncestorOf(other)Booleanกำหนดว่าโหนด Element นี้เป็นโหนดแม่โดยตรงหรือโดยอ้อมของโหนด Element ที่ระบุ
isRootElement()Booleanกำหนดว่าโหนด Element เป็นโหนดรูทของเอกสารหรือไม่
removeAttribute(attribute)Booleanนำแอตทริบิวต์ที่ระบุสำหรับโหนด Element นี้ออก หากมีแอตทริบิวต์ดังกล่าว
removeAttribute(attributeName)Booleanนำแอตทริบิวต์สำหรับโหนด Element นี้ที่มีชื่อที่ระบุและไม่มีเนมสเปซออก หากมีแอตทริบิวต์ดังกล่าว
removeAttribute(attributeName, namespace)Booleanนำแอตทริบิวต์สำหรับโหนด Element นี้ที่มีชื่อและเนมสเปซที่ระบุออก หากมีแอตทริบิวต์ดังกล่าว
removeContent()Content[]นำโหนดทั้งหมดที่เป็นโหนดลูกโดยตรงของโหนด {@code Element} ออก
removeContent(content)Booleanนำโหนดที่ระบุออก หากโหนดนั้นเป็นโหนดย่อยโดยตรงของโหนด {@code Element}
removeContent(index)Content|nullนำโหนดที่ดัชนีที่ระบุออกจากโหนดทั้งหมดที่เป็นโหนดลูกโดยตรงของโหนด {@code Element}
setAttribute(attribute)Elementตั้งค่าแอตทริบิวต์ที่ระบุสำหรับโหนด Element นี้
setAttribute(name, value)Elementตั้งค่าแอตทริบิวต์สำหรับโหนด Element นี้โดยใช้ชื่อ ค่า และไม่มีเนมสเปซที่ระบุ
setAttribute(name, value, namespace)Elementตั้งค่าแอตทริบิวต์สำหรับโหนด Element นี้ด้วยชื่อ ค่า และเนมสเปซที่ระบุ
setName(name)Elementตั้งค่าชื่อภายในของโหนด Element
setNamespace(namespace)Elementตั้งค่าเนมสเปซสำหรับโหนด Element
setText(text)Elementกำหนดค่าข้อความของโหนด Element

เอกสารโดยละเอียด

addContent(content)

ผนวกโหนดที่ระบุเป็นโหนดสุดท้ายของโหนด Element อาร์กิวเมนต์ content อาจเป็นออบเจ็กต์ Element หรือออบเจ็กต์โหนดใดก็ได้ที่สอดคล้องกับประเภท ที่ระบุไว้ใน ContentType

พารามิเตอร์

ชื่อประเภทคำอธิบาย
contentContentโหนดที่จะเพิ่ม

รีเทิร์น

Element — โหนด Element สำหรับการเชื่อมโยง


addContent(index, content)

แทรกโหนดที่ระบุที่ดัชนีที่ระบุในบรรดาโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงของโหนด Element อาร์กิวเมนต์ content อาจเป็นออบเจ็กต์ Element หรือออบเจ็กต์โหนดใดก็ได้ที่สอดคล้องกับประเภทที่แสดงใน ContentType

พารามิเตอร์

ชื่อประเภทคำอธิบาย
indexIntegerดัชนีที่จะแทรกโหนดในบรรดาโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรง ของโหนด Element
contentContentโหนดที่จะแทรก

รีเทิร์น

Element — โหนด Element สำหรับการเชื่อมโยง


cloneContent()

สร้างสำเนาที่ไม่ได้แนบของโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงของโหนด {@code Element}

รีเทิร์น

Content[] - อาร์เรย์ของสำเนาที่ไม่ได้แนบของโหนดทั้งหมดซึ่งเป็นโหนดลูกโดยตรงของโหนด {@code Element}


detach()

ยกเลิกการเชื่อมต่อโหนดจากโหนดระดับบนสุด Element หากโหนดไม่มีโหนดระดับบน เมธอดนี้จะไม่มีผล

รีเทิร์น

Content|null — โหนดที่แยกออก


getAllContent()

รับโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงของโหนด {@code Element}

รีเทิร์น

Content[] — อาร์เรย์ของโหนดทั้งหมดที่เป็นโหนดย่อยของโหนด {@code Element} โดยตรง


getAttribute(name)

รับแอตทริบิวต์สำหรับโหนด Element นี้ที่มีชื่อที่ระบุและไม่มีเนมสเปซ หากไม่มีแอตทริบิวต์ดังกล่าว เมธอดนี้จะแสดงผล null

พารามิเตอร์

ชื่อประเภทคำอธิบาย
nameStringชื่อของแอตทริบิวต์

รีเทิร์น

Attribute|null — แอตทริบิวต์ หรือ null หากไม่มีแอตทริบิวต์ที่มีชื่อที่ระบุและไม่มี เนมสเปซ


getAttribute(name, namespace)

รับแอตทริบิวต์สำหรับโหนด Element นี้ที่มีชื่อและเนมสเปซที่ระบุ หากไม่มีโหนดดังกล่าว เมธอดนี้จะแสดงผล null

พารามิเตอร์

ชื่อประเภทคำอธิบาย
nameStringชื่อของแอตทริบิวต์
namespaceNamespaceเนมสเปซของแอตทริบิวต์

รีเทิร์น

Attribute|null — แอตทริบิวต์ หรือ null หากไม่มีแอตทริบิวต์ที่มีชื่อและเนมสเปซที่ระบุ


getAttributes()

รับแอตทริบิวต์ทั้งหมดสำหรับโหนด Element นี้ตามลำดับที่ปรากฏในเอกสาร

รีเทิร์น

Attribute[] — อาร์เรย์ของแอตทริบิวต์ทั้งหมดสำหรับโหนด Element นี้


getChild(name)

รับElementโหนดแรกที่มีชื่อที่ระบุและไม่มีเนมสเปซซึ่งเป็นองค์ประกอบย่อย โดยตรงของElementโหนดนี้ หากไม่มีโหนดดังกล่าว เมธอดนี้จะแสดงผล null

พารามิเตอร์

ชื่อประเภทคำอธิบาย
nameStringชื่อของโหนดElementลูก

รีเทิร์น

Element|null - โหนด Element หรือ null หากไม่มีโหนด Element ลูกในทันทีที่มีชื่อที่ระบุและไม่มีเนมสเปซ


getChild(name, namespace)

รับโหนด Element แรกที่มีชื่อและเนมสเปซที่ระบุซึ่งเป็นบุตรElement ของโหนดนี้ หากไม่มีโหนดดังกล่าว เมธอดนี้จะแสดงผล null

พารามิเตอร์

ชื่อประเภทคำอธิบาย
nameStringชื่อของโหนดElementลูก
namespaceNamespaceเนมสเปซของโหนดElementย่อย

รีเทิร์น

Element|null — โหนด Element หรือ null หากไม่มีโหนด Element ย่อยที่อยู่ใต้โหนดนั้นโดยตรงซึ่งมีชื่อและเนมสเปซที่ระบุ


getChildText(name)

รับค่าข้อความของโหนดที่มีชื่อที่ระบุและไม่มีเนมสเปซ หากโหนดเป็น โหนดลูกโดยตรงของโหนด Element หากไม่มีโหนดดังกล่าว เมธอดนี้จะแสดงผล null

พารามิเตอร์

ชื่อประเภทคำอธิบาย
nameStringชื่อของโหนดลูก

รีเทิร์น

String|null — ค่าข้อความของโหนดลูก หรือ null หากไม่มีโหนดลูกที่อยู่ติดกัน ที่มีชื่อที่ระบุและไม่มีเนมสเปซ


getChildText(name, namespace)

รับค่าข้อความของโหนดที่มีชื่อและเนมสเปซที่ระบุ หากโหนดเป็นองค์ประกอบย่อยโดยตรงของโหนด Element หากไม่มีโหนดดังกล่าว เมธอดนี้จะแสดงผล null

พารามิเตอร์

ชื่อประเภทคำอธิบาย
nameStringชื่อของโหนดลูก
namespaceNamespaceเนมสเปซของโหนดย่อย

รีเทิร์น

String|null — ค่าข้อความของโหนดลูก หรือ null หากไม่มีโหนดลูกที่อยู่ติดกัน ที่มีชื่อและเนมสเปซที่ระบุ


getChildren()

รับโหนด Element ทั้งหมดที่เป็นโหนดลูกของโหนด Element นี้ใน ลำดับที่ปรากฏในเอกสาร

รีเทิร์น

Element[] — อาร์เรย์ของโหนด Element ทั้งหมดที่เป็นโหนดย่อยโดยตรงของโหนด Element นี้


getChildren(name)

รับโหนด Element ทั้งหมดที่มีชื่อที่ระบุและไม่มีเนมสเปซซึ่งเป็นองค์ประกอบย่อยโดยตรง ของโหนด Element นี้ตามลำดับที่ปรากฏในเอกสาร

พารามิเตอร์

ชื่อประเภทคำอธิบาย
nameStringชื่อของโหนดElementลูก

รีเทิร์น

Element[] — อาร์เรย์ของโหนด Element ทั้งหมดที่มีชื่อที่ระบุและไม่มีเนมสเปซซึ่งเป็น โหนดย่อยโดยตรงของโหนด Element นี้


getChildren(name, namespace)

รับโหนด Element ทั้งหมดที่มีชื่อและเนมสเปซที่ระบุซึ่งเป็นโหนดย่อยโดยตรงของ โหนด Element นี้ ตามลำดับที่ปรากฏในเอกสาร

พารามิเตอร์

ชื่อประเภทคำอธิบาย
nameStringชื่อของโหนดElementลูก
namespaceNamespaceเนมสเปซของโหนดElementย่อย

รีเทิร์น

Element[] — อาร์เรย์ของโหนด Element ทั้งหมดที่มีชื่อและเนมสเปซที่ระบุ ซึ่งเป็น โหนดย่อยที่อยู่ใต้โหนด Element นี้โดยตรง


getContent(index)

รับโหนดที่ดัชนีที่ระบุในบรรดาโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงของโหนด {@code Element} หากไม่มีโหนดที่ดัชนีที่ระบุ เมธอดนี้จะแสดงผล null

พารามิเตอร์

ชื่อประเภทคำอธิบาย
indexIntegerดัชนีสำหรับโหนดในบรรดาโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงของโหนด {@code Element}

รีเทิร์น

Content|null — โหนด หรือ null หากไม่มีโหนดที่ดัชนีที่ระบุ


getContentSize()

รับจำนวนโหนดที่เป็นโหนดย่อยโดยตรงของโหนด {@code Element}

รีเทิร์น

Integer — จำนวนโหนดที่เป็นโหนดย่อยโดยตรงของโหนด {@code Element}


getDescendants()

รับโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงหรือโดยอ้อมของโหนด {@code Element} ตามลำดับที่ปรากฏในเอกสาร

รีเทิร์น

Content[] - อาร์เรย์ของโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงหรือโดยอ้อมของโหนด {@code Element}


getDocument()

รับเอกสาร XML ที่มีโหนด {@code Element}

รีเทิร์น

Document — เอกสารที่มีโหนด {@code Element}


getName()

รับชื่อในพื้นที่ของโหนด Element หากโหนดมีคำนำหน้าเนมสเปซ ให้ใช้ getQualifiedName() หรือ getNamespace()getPrefix() เพื่อ รับคำนำหน้า

รีเทิร์น

String — ชื่อในพื้นที่ของโหนด Element


getNamespace()

รับเนมสเปซสำหรับโหนด Element

รีเทิร์น

Namespace - เนมสเปซสำหรับโหนด Element


getNamespace(prefix)

รับเนมสเปซที่มีคำนำหน้าที่ระบุสำหรับโหนด Element

พารามิเตอร์

ชื่อประเภทคำอธิบาย
prefixStringคำนำหน้าสำหรับเนมสเปซ

รีเทิร์น

Namespace - เนมสเปซที่มีคำนำหน้าที่ระบุสำหรับโหนด Element


getParentElement()

รับโหนดแม่ของโหนด Element หากโหนดไม่มีโหนดหลัก เมธอดนี้จะ แสดงผล null

รีเทิร์น

Element|null — โหนด Element ระดับบนสุด


getQualifiedName()

รับชื่อในเครื่องและคำนำหน้าเนมสเปซของโหนด Element ในรูปแบบ [namespacePrefix]:[localName] หากโหนดไม่มีคำนำหน้าเนมสเปซ ให้ใช้ getName()

รีเทิร์น

String — ชื่อในเครื่องและคำนำหน้าเนมสเปซของโหนด Element ในรูปแบบ [namespacePrefix]:[localName]


getText()

รับค่าข้อความของโหนด Element

รีเทิร์น

String — ค่าข้อความของโหนด Element


getValue()

รับค่าข้อความของโหนดทั้งหมดที่เป็นโหนดลูกโดยตรงหรือโดยอ้อมของโหนด ตามลำดับ ที่ปรากฏในเอกสาร

รีเทิร์น

String — ค่าข้อความของโหนดทั้งหมดที่เป็นโหนดลูกโดยตรงหรือโดยอ้อมของโหนด


isAncestorOf(other)

กำหนดว่าโหนด Element นี้เป็นโหนดแม่โดยตรงหรือโดยอ้อมของโหนด Element ที่ระบุ

พารามิเตอร์

ชื่อประเภทคำอธิบาย
otherElementโหนด Element อื่น

รีเทิร์น

Booleantrue หากโหนด Element นี้เป็นโหนดแม่โดยตรงหรือโดยอ้อมของโหนด Element ที่ระบุ false หากไม่ใช่


isRootElement()

กำหนดว่าโหนด Element เป็นโหนดรูทของเอกสารหรือไม่

รีเทิร์น

Booleantrue หากโหนด Element เป็นโหนดรากของเอกสาร false หากไม่ใช่


removeAttribute(attribute)

นำแอตทริบิวต์ที่ระบุสำหรับโหนด Element นี้ออก หากมีแอตทริบิวต์ดังกล่าว

พารามิเตอร์

ชื่อประเภทคำอธิบาย
attributeAttributeแอตทริบิวต์

รีเทิร์น

Booleantrue หากมีแอตทริบิวต์และถูกนำออก false หากไม่มี


removeAttribute(attributeName)

นำแอตทริบิวต์สำหรับโหนด Element นี้ที่มีชื่อที่ระบุและไม่มีเนมสเปซออก หากมีแอตทริบิวต์ดังกล่าว

พารามิเตอร์

ชื่อประเภทคำอธิบาย
attributeNameStringชื่อของแอตทริบิวต์

รีเทิร์น

Booleantrue หากมีแอตทริบิวต์และถูกนำออก false หากไม่มี


removeAttribute(attributeName, namespace)

นำแอตทริบิวต์สำหรับโหนด Element นี้ที่มีชื่อและเนมสเปซที่ระบุออก หากมีแอตทริบิวต์ดังกล่าว

พารามิเตอร์

ชื่อประเภทคำอธิบาย
attributeNameStringชื่อของแอตทริบิวต์
namespaceNamespaceเนมสเปซของแอตทริบิวต์

รีเทิร์น

Booleantrue หากมีแอตทริบิวต์และถูกนำออก false หากไม่มี


removeContent()

นำโหนดทั้งหมดที่เป็นโหนดลูกโดยตรงของโหนด {@code Element} ออก

รีเทิร์น

Content[] — อาร์เรย์ของโหนดทั้งหมดที่เป็นโหนดย่อยของโหนด {@code Element} ก่อนที่จะถูกนำออก


removeContent(content)

นำโหนดที่ระบุออก หากโหนดนั้นเป็นโหนดย่อยโดยตรงของโหนด {@code Element} อาร์กิวเมนต์ content อาจเป็นออบเจ็กต์ Element หรือออบเจ็กต์โหนดใดก็ได้ที่สอดคล้องกับประเภทที่ระบุไว้ใน ContentType

พารามิเตอร์

ชื่อประเภทคำอธิบาย
contentContentโหนดที่จะนำออก

รีเทิร์น

Booleantrue หากโหนดเป็นโหนดย่อยโดยตรงและถูกนำออก false หากไม่ใช่


removeContent(index)

นำโหนดที่ดัชนีที่ระบุออกจากโหนดทั้งหมดที่เป็นโหนดลูกโดยตรงของโหนด {@code Element} หากไม่มีโหนดที่ดัชนีที่ระบุ เมธอดนี้จะแสดงผล null

พารามิเตอร์

ชื่อประเภทคำอธิบาย
indexIntegerดัชนีสำหรับโหนดในบรรดาโหนดทั้งหมดที่เป็นโหนดย่อยโดยตรงของโหนด {@code Element}

รีเทิร์น

Content|null — โหนดที่ถูกนำออก หรือ null หากไม่มีโหนดที่ดัชนีที่ระบุ


setAttribute(attribute)

ตั้งค่าแอตทริบิวต์ที่ระบุสำหรับโหนด Element นี้

พารามิเตอร์

ชื่อประเภทคำอธิบาย
attributeAttributeแอตทริบิวต์ที่จะตั้งค่า

รีเทิร์น

Element — โหนด Element สำหรับการเชื่อมโยง


setAttribute(name, value)

ตั้งค่าแอตทริบิวต์สำหรับโหนด Element นี้โดยใช้ชื่อ ค่า และไม่มีเนมสเปซที่ระบุ

พารามิเตอร์

ชื่อประเภทคำอธิบาย
nameStringชื่อของแอตทริบิวต์ที่จะตั้งค่า
valueStringค่าของแอตทริบิวต์ที่จะตั้งค่า

รีเทิร์น

Element — โหนด Element สำหรับการเชื่อมโยง


setAttribute(name, value, namespace)

ตั้งค่าแอตทริบิวต์สำหรับโหนด Element นี้ด้วยชื่อ ค่า และเนมสเปซที่ระบุ

พารามิเตอร์

ชื่อประเภทคำอธิบาย
nameStringชื่อของแอตทริบิวต์ที่จะตั้งค่า
valueStringค่าของแอตทริบิวต์ที่จะตั้งค่า
namespaceNamespaceเนมสเปซของแอตทริบิวต์ที่จะตั้งค่า

รีเทิร์น

Element — โหนด Element สำหรับการเชื่อมโยง


setName(name)

ตั้งค่าชื่อภายในของโหนด Element หากต้องการตั้งค่าคำนำหน้าเนมสเปซสำหรับโหนด ให้ใช้ setNamespace(namespace) ร่วมกับ XmlService.getNamespace(prefix, uri)

พารามิเตอร์

ชื่อประเภทคำอธิบาย
nameStringชื่อในพื้นที่ที่จะตั้ง

รีเทิร์น

Element — โหนด Element สำหรับการเชื่อมโยง


setNamespace(namespace)

ตั้งค่าเนมสเปซสำหรับโหนด Element

พารามิเตอร์

ชื่อประเภทคำอธิบาย
namespaceNamespaceเนมสเปซที่จะตั้งค่า

รีเทิร์น

Element — โหนด Element สำหรับการเชื่อมโยง


setText(text)

กำหนดค่าข้อความของโหนด Element หากโหนดมีค่าข้อความหรือ โหนดลูกอยู่แล้ว เมธอดนี้จะเขียนทับเนื้อหาเก่า หากต้องการต่อท้ายหรือแทรกเนื้อหาแทน ให้ใช้ addContent(content) หรือ addContent(index, content)

พารามิเตอร์

ชื่อประเภทคำอธิบาย
textStringข้อความที่จะตั้งค่า

รีเทิร์น

Element — โหนด Element สำหรับการเชื่อมโยง