Thep Excel

Xml.Documentแปลง XML เป็นโครงสร้างตาราง

Xml.Document ใช้สำหรับแปลงเนื้อหา XML (text หรือ binary) เป็นโครงสร้างตารางลำดับชั้น ทำให้สามารถ query ข้อมูล XML ได้ง่ายเหมือน Power Query ตาราง

fx
=Xml.Document(contents, [encoding]) as table

ความนิยม6/10
ความยาก4/10
ประโยชน์6/10

อัปเดต 12 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
contents any เนื้อหา XML ที่ต้องการแปลง สามารถเป็น text string หรือ binary data
[encoding]ไม่บังคับ nullable number null รหัสการเข้ารหัส (encoding) ที่ใช้ในการแปลง XML เช่น 1200 สำหรับ UTF-16, 65001 สำหรับ UTF-8

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

Xml.Document แปลง XML content เป็นโครงสร้างตารางที่ลำดับชั้น ซึ่งแสดงความสัมพันธ์ของ elements, attributes, และ values ในไฟล์ XML

ที่เจ๋งคือ มันยอมรับทั้ง text string และ binary data ได้ คุณสามารถ load XML จาก API, file, หรือ text โดยตรง แล้วก็ transform ไปเป็นรูปแบบที่ใช้งานได้สะดวก

ส่วนตัวผมใช้ Xml.Document มักจะต่อกับ Table.ExpandRecordColumn() เพื่อปล่อย nested elements ออกมา และ Table.SelectRows() เพื่อกรอง element ที่ต้องการ นี่คือ workflow ที่ทำให้ XML import ไม่ปวดหัวเลย 😎

Examples

แปลง XML string พื้นฐานlet XmlString = "Product A100Product B200", ParsedXml = Xml.Document(XmlString) in ParsedXml

Xml.Document เปลี่ยน XML string เป็นตารางลำดับชั้น แต่ละแถวแสดง element ที่พบ

fx
let
XmlString = "<Root><Item><Name>Product A</Name><Price>100</Price></Item><Item><Name>Product B</Name><Price>200</Price></Item></Root>",
ParsedXml = Xml.Document(XmlString)
in
ParsedXml

ผลลัพธ์ตารางแสดงโครงสร้าง Root element พร้อม child nodes
กรอง element เฉพาะที่ต้องการlet XmlContent = File.Contents("data.xml"), ParsedXml = Xml.Document(XmlContent), Items = Table.SelectRows(ParsedXml, each [Name] = "Item") in Items

ผสม Xml.Document กับ Table.SelectRows เพื่อกรอง element ที่ต้องการออกมา

fx
let
XmlContent = File.Contents("data.xml"),
ParsedXml = Xml.Document(XmlContent),
Items = Table.SelectRows(ParsedXml, each [Name] = "Item")
in
Items

ผลลัพธ์ตารางที่มีเฉพาะ Item elements
ขยาย nested elementslet XmlString = "Product A100", ParsedXml = Xml.Document(XmlString), Expanded = Table.ExpandRecordColumn(ParsedXml, "Item", {"Name", "Price"}, {"Name", "Price"}…

ใช้ Table.ExpandRecordColumn เพื่อเปิดตัว nested record ออกมาเป็นคอลัมน์

fx
let
XmlString = "<Root><Item><Name>Product A</Name><Price>100</Price></Item></Root>",
ParsedXml = Xml.Document(XmlString),
Expanded = Table.ExpandRecordColumn(ParsedXml, "Item", {"Name", "Price"}, {"Name", "Price"})
in
Expanded

ผลลัพธ์ตารางที่มีคอลัมน์ Name และ Price แยกออกมา
ระบุ encoding สำหรับ XML ที่เข้ารหัสเป็น UTF-16let BinaryXml = File.Contents("data-utf16.xml"), ParsedXml = Xml.Document(BinaryXml, 1200) in ParsedXml

พารามิเตอร์ encoding ช่วยให้สามารถจัดการ XML ที่เข้ารหัสแตกต่างกัน (1200 = UTF-16, 65001 = UTF-8)

fx
let
BinaryXml = File.Contents("data-utf16.xml"),
ParsedXml = Xml.Document(BinaryXml, 1200)
in
ParsedXml

ผลลัพธ์ตารางแสดงโครงสร้าง XML ที่อ่านได้ถูกต้อง

FAQs

ผลลัพธ์จาก Xml.Document คืออะไร?+

ผลลัพธ์คือ table ที่แสดงโครงสร้างลำดับชั้นของ XML บางครั้ง elements ถูกแสดงเป็น record ที่ nested กัน คุณอาจต้องใช้ Table.ExpandRecordColumn เพื่อเปิดตัวข้อมูลออกมา

จะส่ง encoding ให้ Xml.Document ได้ยังไง?+

ใช้พารามิเตอร์ที่สองคือ encoding number เช่น 65001 (UTF-8), 1200 (UTF-16), 1252 (Windows-1252) เป็นต้น

Xml.Document กับ Json.Document ต่างกันตรงไหน?+

Xml.Document จัดการไฟล์ XML ส่วน Json.Document จัดการไฟล์ JSON ทั้งสองใช้โครงสร้างลำดับชั้นแต่รูปแบบไฟล์ต่างกัน

ถ้า XML parsing ผิดพลาดจะเกิดอะไรขึ้น?+

Power Query จะ throw error หากรูปแบบ XML ไม่ถูกต้องหรือ encoding ผิด อย่าลืมตรวจสอบ XML validity และ encoding ของไฟล์

Resources & Related

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่