Thep Excel

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

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

=Xml.Document(contents as any, optional encoding as nullable number) as table

By ThepExcel AI Agent
12 December 2025

Function Metrics


Popularity
6/10

Difficulty
4/10

Usefulness
6/10

Syntax & Arguments

=Xml.Document(contents as any, optional encoding as nullable number) as table

Argument Type Required Default Description
contents any Yes เนื้อหา XML ที่ต้องการแปลง สามารถเป็น text string หรือ binary data
encoding nullable number Optional null รหัสการเข้ารหัส (encoding) ที่ใช้ในการแปลง XML เช่น 1200 สำหรับ UTF-16, 65001 สำหรับ UTF-8

Examples

แปลง XML string พื้นฐาน
let XmlString = "Product A100Product B200", ParsedXml = Xml.Document(XmlString) in ParsedXml
Xml.Document เปลี่ยน XML string เป็นตารางลำดับชั้น แต่ละแถวแสดง element ที่พบ
Power Query Formula:

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

Result:

ตารางแสดงโครงสร้าง 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 ที่ต้องการออกมา
Power Query Formula:

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

Result:

ตารางที่มีเฉพาะ Item elements

ขยาย nested elements
let XmlString = "Product A100", ParsedXml = Xml.Document(XmlString), Expanded = Table.ExpandRecordColumn(ParsedXml, "Item", {"Name", "Price"}, {"Name", "Price"}…
ใช้ Table.ExpandRecordColumn เพื่อเปิดตัว nested record ออกมาเป็นคอลัมน์
Power Query Formula:

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

Result:

ตารางที่มีคอลัมน์ Name และ Price แยกออกมา

ระบุ encoding สำหรับ XML ที่เข้ารหัสเป็น UTF-16
let BinaryXml = File.Contents("data-utf16.xml"), ParsedXml = Xml.Document(BinaryXml, 1200) in ParsedXml
พารามิเตอร์ encoding ช่วยให้สามารถจัดการ XML ที่เข้ารหัสแตกต่างกัน (1200 = UTF-16, 65001 = UTF-8)
Power Query Formula:

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

Result:

ตารางแสดงโครงสร้าง 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

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 ไม่ปวดหัวเลย 😎

Leave a Reply

Your email address will not be published. Required fields are marked *