Hogyan dolgozzunk az XML-feldolgozással a C++ nyelven?

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.

Lásd még:

 Magyar