Πώς να εργαστείτε με την επεξεργασία 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 χρησιμοποιήστε ένα μοντέλο με βάση το χέρι - ένα στοιχείο που επιστρέφει από μια λείπει διαδρομή είναι μηδέν. 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 String
Χρησιμοποιήστε XmlDocument::SaveToUtf8() Για να αποκτήσετε το XML:
std::string xml = doc.SaveToUtf8();Βήμα 7: Διαχείριση σφαλμάτων
ΒΑΡΤΙ XmlDocument::Load σε ένα δοκιμαστικό/αποκλεισμένο μπλοκ κατά την επεξεργασία μη εμπιστευμένου 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 και μπορούν να χρησιμοποιηθούν άμεσα. τα κλαδιά χαρτογράφων (WorkbookXmlMapper, WorksheetXmlMapper,(α) Οι εσωτερικοί βοηθούς που καλούνται από την XlsxWorkbookSerializer Δεν προορίζονται για άμεση χρήση.
Μπορώ να δημιουργήσω ένα νέο έγγραφο XML από το scratch;?
Ναι, χρησιμοποιήστε το XmlDocument::Build να δημιουργήσετε ένα έγγραφο προγραμματικά, στη συνέχεια χρησιμοποιείτε το XmlElement και XmlAttribute::MakeAttribute Προσθέστε κόντρα.
Η ΚΕ XmlDocument Υποστήριξη για το XPath Queries;?
Η τρέχουσα εφαρμογή παρέχει μόνο το διαδίκτυο χειρισμού στοιχείων. XPath δεν υποστηρίζεται.
Τι κρυπτογραφεί SaveToUtf8() Η παραγωγή;?
Η έκδοση είναι πάντα κρυπτογραφημένη με XML UTF-8 (Η δήλωση XML)<?xml version="1.0" encoding="UTF-8"?>1) περιλαμβάνεται στην παραγωγή.
Μπορώ να χρησιμοποιήσω XmlDocument Διαβάστε τα αρχεία XLSX.?
Τα αρχεία XLSX διαχειρίζονται εσωτερικά από το XlsxWorkbookSerializer.Δεν υπάρχει δημόσια API για την εξόρυξη πρώτων αρχείων. Workbook Για όλες τις λειτουργίες φόρτισης/αποθήκευσης XLSX.