Comment travailler avec le traitement XML en C++

Comment travailler avec le traitement XML en C++

Aspose.Cells FOSS for C++ includes a lightweight XML processing layer used internally for reading and writing Open XML parts. The XmlDocument, XmlElement,et XmlAttribute Les classes fournissent un accès programmatique aux données XML. Ce guide couvre le chargement de XML, les éléments traversant et la sérialisation des documents.

Guide étape par étapes

Étape 1 : Démarrer la construction

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)

Étape 2 : Inclure les têtes

#include "aspose/cells_foss/XmlDocument.h"
#include "aspose/cells_foss/XmlElement.h"
#include "aspose/cells_foss/XmlAttribute.h"

using namespace Aspose::Cells_FOSS;

Étape 3 : Remplissez un document XML

Utiliser XmlDocument::Load Pour parser une rame XML dans l’arbre de document en mémoire :

int main() {
    XmlDocument doc;
    doc.Load("<root><item key=\"a\">Hello</item><item key=\"b\">World</item></root>");
    return 0;
}

Étape 4 : Vérifier les éléments null

XmlElement utilisez un modèle basé sur les mains - un élément retourné d’un chemin manquant est null. IsNull() Avant de recevoir les données :

XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
    std::string val = root.GetValue();
}

Étape 5 : Traverser les attributs

Utiliser XmlElement::GetAttributes() Chaque attribut de gestion expose son nom et sa valeur :

auto attrs = root.GetAttributes();
for (auto& attr : attrs) {
    bool isNull = attr.IsNull();
}

Étape 6 : Sérialiser le fil UTF-8

Utiliser XmlDocument::SaveToUtf8() Pour obtenir le XML sérialisé :

std::string xml = doc.SaveToUtf8();

Étape 7 : Comprendre les erreurs de parse

Wrap XmlDocument::Load dans un bloc de tentative/catch lors du traitement d’un XML non confié:

try {
    doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
    // Handle malformed XML
}

Problèmes communs et fixations

IsNull() Retourne vraie inattendu Vérifiez que la structure XML correspond à votre schéma prévu avant de traverser.

XmlParsingException sur le chargement L’entrée est malformée ou contient des entités non soutenues. Valider le XML avec un outil extérieur avant de passer à Load.

SaveToUtf8() Retourner des résultats inattendus La structure du document a été modifiée après Load.Vérifier tous les intermédiaires Build Les opérations ont été correctement terminées.

Les attributs non trouvés Vérifiez que le nom d’attribut correspond exactement comme il apparaît dans la source XML.

Résultat vide de GetValue() Les nœuds de texte qui ne contiennent que le blanc peuvent retourner une ligne vide. Vérifiez la XML crude pour confirmer que l’élément a du contenu non-whiteespace.

Questions fréquemment posées

Est-ce que la couche XML est destinée à l’utilisation d’applications ou uniquement à un usage interne?

Le XmlDocument, XmlElement,et XmlAttribute Les classes font partie de l’API publique et peuvent être utilisées directement. les classes de cartes (WorkbookXmlMapper, WorksheetXmlMapper,(d) les aides internes sont appelés par XlsxWorkbookSerializer ne sont pas destinées à l’usage direct.

Puis-je créer un nouveau document XML à partir de scratch ?

Oui, utilisez XmlDocument::Build Pour créer un document programmable, utilisez-le XmlElement et XmlAttribute::MakeAttribute Ajouter des nodes.

Le fait XmlDocument Soutien à la question XPath ?

Non. La mise en œuvre actuelle ne fournit que le traversal d’élément ; XPath n’est pas supporté.

Ce que le codage fait SaveToUtf8() Produit ?

Le code de la version est toujours encodé par le format XML (<?xml version="1.0" encoding="UTF-8"?>Elle est inclus dans la production.

Je peux utiliser XmlDocument Pour lire les parties d’archives XLSX ?

Les pièces d’archive XLSX sont gérées internes par XlsxWorkbookSerializer.Il n’y a pas d’API publique pour extraire des pièces d’archive. Workbook Pour toutes les opérations de chargement/save XLSX.

Voir aussi

 Français