วิธีการทํางานกับ การประมวลผล XML ใน C++
Aspose.Cells FOSS for C++ includes a lightweight XML processing layer used internally for reading and writing Open XML parts. The XmlDocument, XmlElement,และ XmlAttribute คลาสให้การเข้าถึงข้อมูล XML โดยโปรแกรม. คู่มือนี้ครอบคลุมการอัตราบรรจุ XML, การเดินผ่านองค์ประกอบ และการจัดเรียงเอกสาร.
คู่มือขั้นตอนตามขั้นตอนนี้
ขั้น ตอน ที่ 1: จัด การ สร้าง
cmake_minimum_required(VERSION 3.15)
project(XmlProcessing CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(XmlProcessing main.cpp)
target_link_libraries(XmlProcessing PRIVATE Aspose.Cells.Foss.Cpp)ขั้นตอนที่ 2: รวมหัวข้อ
#include "aspose/cells_foss/XmlDocument.h"
#include "aspose/cells_foss/XmlElement.h"
#include "aspose/cells_foss/XmlAttribute.h"
using namespace Aspose::Cells_FOSS;ขั้นตอน 3: อัตราการอัดเอกสาร XML
การใช้งาน XmlDocument::Load เพื่อพารัสรัง XML เข้าต้นเอกสารในความจํา:
int main() {
XmlDocument doc;
doc.Load("<root><item key=\"a\">Hello</item><item key=\"b\">World</item></root>");
return 0;
}ขั้นตอนที่ 4: ตรวจสอบตัวเลขศูนย์
XmlElement ใช้แบบจําลองที่ใช้มือ อัธยาคารกลับจากเส้นทางขาดเป็น null. ตรวจสอบเสมอ IsNull() ก่อนการเข้าถึงข้อมูล:
XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
std::string val = root.GetValue();
}ขั้นตอนที่ 5: คุณสมบัติทางข้าม
การใช้งาน XmlElement::GetAttributes() เพื่อหารวบรวมคุณสมบัติ แต่ละตัวจัดการคุณภาพจะแสดงชื่อและค่าของมัน:
auto attrs = root.GetAttributes();
for (auto& attr : attrs) {
bool isNull = attr.IsNull();
}ขั้นตอน 6: การเรียงเป็น UTF-8 สตริง
การใช้งาน XmlDocument::SaveToUtf8() เพื่อรับ XML แบบเรียงลําดับ:
std::string xml = doc.SaveToUtf8();ขั้นตอนที่ 7: การจัดการความผิดพลาดในการวิเคราะห์
Wrap XmlDocument::Load ในบล็อก try/catch เมื่อประมวลผล XML ที่ไม่น่าเชื่อถือ:
try {
doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
// Handle malformed XML
}ปัญหาทั่วไปและข้อกําหนด
IsNull() กลับเป็นจริงอย่างไม่คาดหวัง ทางขององค์ประกอบไม่มีอยู่ในเอกสาร ยืนยันโครงสร้าง XML ตรงกับแผนการที่คาดหวัง ก่อนทราเวอร์สแอล์ม.
XmlParsingException ในภาระ การเข้ามีรูปแบบผิดปกติหรือรวมตัวที่ไม่สนับสนุน. ยืนยัน XML ด้วยเครื่องมือภายนอก ก่อนที่จะส่งมันไปยัง Load.
SaveToUtf8() กลับผลิตที่ไม่คาดหวัง โครงสร้างเอกสารถูกปรับปรุงหลังจากการใช้งานของ Load. ตรวจสอบทั้งหมดระหว่างการ Build การดําเนินงานที่สําเร็จอย่างถูกต้อง.
คุณสมบัติไม่พบ การค้นหาคุณสมบัติเป็นตัวเลขที่มีความรู้สึก. ยืนยันว่าชื่อคุณลักษณะตรงกับอย่างถูกต้องในแหล่ง XML.
ผลว่างจาก GetValue() คะแนนข้อความที่มีเพียงช่องว่างอาจส่งร่องไร้ค่า. ตรวจสอบ XML แคบเพื่อยืนยันว่าองค์ประกอบมีเนื้อหาที่ไม่ใช่ช่วนว่าง.
คําถามที่พบบ่อย
ชั้น XML มีความหมายสําหรับการใช้งานในแอพลิเคชั่นหรือเพียงแค่ในการใช้ภายใน?
การ XmlDocument, XmlElement,และ XmlAttribute คลาสเป็นส่วนหนึ่งของ API ที่สาธารณะและสามารถใช้ได้โดยตรง. คลัส Mapper (WorkbookXmlMapper, WorksheetXmlMapper,เป็นผู้ช่วยภายในที่เรียกว่า XlsxWorkbookSerializer และไม่ได้ตั้งไว้สําหรับการใช้โดยตรง.
ผมสามารถสร้างเอกสาร XML ใหม่ได้หรือไม่?
ใช่ ใช้ XmlDocument::Build เพื่อสร้างเอกสารโดยโปรแกรม แล้วใช้ XmlElement และ XmlAttribute::MakeAttribute เพิ่มโน้ต.
Does XmlDocument รองรับการสอบถาม XPath?
ไม่ การดําเนินงานปัจจุบันให้บริการในการเดินผ่านตัวประกอบเพียง; XPath ไม่ได้สนับสนุน.
การโคดอะไร SaveToUtf8() ผลิต?
การออกคือ XML ที่มีการรหัส UTF-8 เสมอ. คําประกาศ XML (<?xml version="1.0" encoding="UTF-8"?>) ได้รวมอยู่ในผลิต.
ฉันใช้ได้มั้ย? XmlDocument เพื่ออ่านส่วนของอาร์คิฟ XLSX?
ส่วนอาร์คิฟ XLSX ถูกจัดการภายในโดย XlsxWorkbookSerializer. ไม่มี API ที่เปิดให้บริการเพื่อสกัดส่วนอาร์คิฟที่ไม่ถูกเก็บไว้. ใช้ Workbook สําหรับการทํางาน XLSX ทั้งหมด/การเก็บรักษา.