Hogyan dolgozzunk az XML-feldolgozással a C++ nyelven?
Aspose.Cells FOSS for C++ includes a lightweight XML processing layer used internally for reading and writing Open XML parts. The XmlDocument, XmlElement,és a következők: XmlAttribute Az XML-adatokhoz programmatizált hozzáférést biztosít a klasszák. Ez az útmutató magában foglalja az XML betöltését, az elemek átjárását és a dokumentumok sorozatosítását.
Lépésről lépésre szóló útmutató
1. lépés: Állítsd fel az épületet!
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. lépés: Figyelembe kell venni a címsorokat is
#include "aspose/cells_foss/XmlDocument.h"
#include "aspose/cells_foss/XmlElement.h"
#include "aspose/cells_foss/XmlAttribute.h"
using namespace Aspose::Cells_FOSS;3. lépés: XML dokumentum betöltése
Használat XmlDocument::Load az XML-hárcának a memóriában lévő dokumentumfaba történő elemzése:
int main() {
XmlDocument doc;
doc.Load("<root><item key=\"a\">Hello</item><item key=\"b\">World</item></root>");
return 0;
}4. lépés: Ellenőrizze a null elemeket
XmlElement egy fogantyú-alapú modellt használ a hiányzó útvonalból visszaküldött elem null. Mindig ellenőrizze, hogy az adott elem nem teljesíti a kívánt értékeket. IsNull() az adatok elérése előtt:
XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
std::string val = root.GetValue();
}5. lépés: Átjáró tulajdonságok
Használat XmlElement::GetAttributes() Az atribútumok gyűjteményének a neve és értéke.:
auto attrs = root.GetAttributes();
for (auto& attr : attrs) {
bool isNull = attr.IsNull();
}6. lépés: UTF-8-os szekcióhoz sorozatba helyezése
Használat XmlDocument::SaveToUtf8() hogy megkapja a sorozatos XML-t:
std::string xml = doc.SaveToUtf8();7. lépés: Kezelje a vizsgálati hibákat
Csomagolás XmlDocument::Load a nem megbízható XML feldolgozásakor egy try/catch blokkban:
try {
doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
// Handle malformed XML
}Általános problémák és megoldások
IsNull() váratlanul igaz. Az elem útja nem létezik a dokumentumban. Ellenőrizze, hogy az XML struktúra megfelel-e a várt schéma számára.
XmlParsingException terhelve A bemeneti formátum hibás vagy nem támogatott entitásokat tartalmaz. Valódiítsd a XML-t egy külső eszköz segítségével, mielőtt továbbítod az XML beállítására vonatkozó adatot. Load.
SaveToUtf8() váratlan kimenetel visszaadása A dokumentum szerkezetét a következők után módosították: Load.Ellenőrizni minden közbenső adatot. Build a helyesen elvégzett műveletek.
Nem talált attribútumok Attribútumkeresés nagybetű-érzékeny. Ellenőrizze, hogy az attribútumnév pontosan olyan, mint amilyen az XML forrásban.
Üres eredmény GetValue() A szöveges csomópontok, amelyek csak fehér teret tartalmaznak, üres szalagot adhatnak vissza. Ellenőrizze a nyers XML-t, hogy megerősítse, hogy az elem nem fehér teret tartalmaz.
Gyakran feltett kérdések
Az XML réteg csak alkalmazási vagy belső használatra van-e szánt?
A XmlDocument, XmlElement, és XmlAttribute A mapper osztályok a nyilvános API részei, és közvetlenül használhatók.WorkbookXmlMapper, WorksheetXmlMapper, stb.) belső segédek, akiket a XlsxWorkbookSerializer és nem a közvetlen felhasználásra szánt.
Készíthetek egy új XML dokumentumot a semmiből?
Igen, használd. XmlDocument::Build programmatically, majd használja XmlElement és a XmlAttribute::MakeAttribute csomópontok hozzáadására.
Igenis. XmlDocument XPath kérdéseit támogatja?
Nem. A jelenlegi implementáció csak elemkezelő átjárást biztosít; az XPath nem támogatott.
Mi a kódolás SaveToUtf8() Termelni?
A kimeneti mindig UTF-8 kódolt XML. Az XML nyilatkozat (<?xml version="1.0" encoding="UTF-8"?>) a kimenetelben szerepel.
Használhatom? XmlDocument XLSX archívumokat olvasni?
Az XLSX archiválási részeket a XlsxWorkbookSerializer.Nincs nyilvános API a nyers archívum részek kivonására. Használja az alábbi weboldalt: Workbook minden XLSX-töltés/megőrzés művelet esetében.