כיצד לעבוד עם עיבוד 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: בדוק את החלקים ה-Null
XmlElement משתמשים במודל מבוסס כונן – פריט שחוזר מהדרך שנעלמה הוא אפס. 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 block בעת עיבוד XML לא מאמין:
try {
doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
// Handle malformed XML
}בעיות נפוצות ותקנות
IsNull() חוזרים אמיתיים באופן בלתי צפוי הקפד את המבנה של XML מתאים לתבנית הצפויה שלך לפני המעבר.
XmlParsingException על הלחץ הכניסה מוטעה או מכילה ישויות שאינן נתמכות.הוכחת XML עם כלי חיצוני לפני העברתו ל- XML Load.
SaveToUtf8() החזרה של תוצאות בלתי צפויות המבנה של המסמך שונה לאחר Load.בדוק את כל המשתתפים Build הפעילות הושלמה בצורה נכונה.
תכונות לא נמצאו בדוק את שם התכונה מתאים בדיוק כפי שהוא מופיע במקור XML.
תוצאות ריקות מ GetValue() קוטרים טקסט המכילים רק שטח לבן יכולים להחזיר שורה ריקה.בדוק את XML הירוק כדי לאשר כי הפורמט יש תוכן שאינו שטוח לווט.
שאלות נפוצות שואלים
האם שכבת XML מיועדת לשימוש יישומי או לשימושי פנימי בלבד?
The XmlDocument, XmlElement, ו XmlAttribute ניתן להשתמש ב- API הציבורי ולהשתמש בו באופן ישיר. (WorkbookXmlMapper, WorksheetXmlMapper,(ב) ישנם עוזרים פנימיים שנקראים על ידי XlsxWorkbookSerializer לא נועד לשימוש ישיר.
האם אני יכול לבנות מסמך XML חדש מתוך scratch?
כן – שימוש XmlDocument::Build כדי לבנות מסמך באופן תוכנה, ולאחר מכן להשתמש XmlElement ו XmlAttribute::MakeAttribute להוסיף נוזלים.
האם XmlDocument תמיכה ב-XPATH QUeries?
לא. יישום הנוכחי מספק פריט ניהול רק דרך; XPath אינו נתמך.
מה הקוד עושה SaveToUtf8() לייצר ?
תוצאות המקור הן תמיד UTF-8 מקודד XML.<?xml version="1.0" encoding="UTF-8"?>(הוא נכלל בתעשייה.
אני יכול להשתמש XmlDocument לקרוא חלקים של ארכיון XLSX?
חלקים של ארכיון XLSX מנוהלים באופן פנימי על ידי XlsxWorkbookSerializer.אין API ציבורי כדי לחלץ חלקים של ארכיון ירוק. Workbook עבור כל פעולות ה- XLSX להטעין/שמירה.