Cómo trabajar con el procesamiento 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,y, XmlAttribute Las clases proporcionan acceso programático a los datos XML. Esta guía cubre cargar XML, cruzar elementos y serializar documentos.
Guía paso a paso
Paso 1: Instalar el edificio
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)Paso 2: Incluye los cabezas
#include "aspose/cells_foss/XmlDocument.h"
#include "aspose/cells_foss/XmlElement.h"
#include "aspose/cells_foss/XmlAttribute.h"
using namespace Aspose::Cells_FOSS;Paso 3: Cargar un documento XML
Uso XmlDocument::Load para parse una cinta XML en el árbol de documento in-memoria:
int main() {
XmlDocument doc;
doc.Load("<root><item key=\"a\">Hello</item><item key=\"b\">World</item></root>");
return 0;
}Paso 4: Verifique los elementos cero
XmlElement utiliza un modelo basado en la mano — un elemento devuelto desde un camino perdido es nulo. IsNull() Antes de acceder a los datos:
XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
std::string val = root.GetValue();
}Paso 5: Atributos de Traverse
Uso XmlElement::GetAttributes() Cada persona que se ocupa de los atributos exponerá su nombre y valor:
auto attrs = root.GetAttributes();
for (auto& attr : attrs) {
bool isNull = attr.IsNull();
}Paso 6: Serializar a la banda UTF-8
Uso XmlDocument::SaveToUtf8() Para obtener el XML serializado:
std::string xml = doc.SaveToUtf8();Paso 7: Comprar los errores de parse
Wrap XmlDocument::Load en un bloque de prueba/catch cuando procesamos XML no confiado:
try {
doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
// Handle malformed XML
}Problemas y soluciones comunes
IsNull() Devolver la verdad inesperadamente El camino del elemento no existe en el documento. Verifique la estructura XML que se ajusta a su esquema esperado antes de cruzar.
XmlParsingException En carga La entrada es malformada o contiene entidades no apoyadas. Validar el XML con una herramienta externa antes de pasarlo a la página web del usuario. Load.
SaveToUtf8() Retorno de la producción inesperada La estructura del documento fue modificada después de que se Load.Verificar todos los intermediarios Build Las operaciones se completaron correctamente.
Atributos no encontrados Verificar el nombre de atributo coincide exactamente como aparece en la fuente XML.
Resultado vacío de GetValue() Los nódulos de texto que contienen sólo el espacio blanco pueden devolver una línea vacía. verifique XML crudo para confirmar que el elemento tiene contenido no-espazo blanko.
Preguntas frecuentes
¿La capa XML está destinada solo al uso de la aplicación o el uso interno?
El XmlDocument, XmlElement,y, XmlAttribute Las clases son parte de la API pública y se pueden utilizar directamente. las clases de mapas (WorkbookXmlMapper, WorksheetXmlMapper,y otros) son los asistentes internos llamados por el XlsxWorkbookSerializer No están destinados a uso directo.
¿Puedo crear un nuevo documento XML desde el escratch?
Sí, usamos XmlDocument::Build para crear un documento de forma programática, y luego utilizar XmlElement y XmlAttribute::MakeAttribute Para añadir nódulos.
¿Qué hace XmlDocument ¿Suporte a las consultas de XPath?
No. La implementación actual proporciona el control de elementos solo a través; XPath no se apoya.
¿Qué codificación hace SaveToUtf8() ¿Producción de la?
La versión de la etiqueta es el formato XML (<?xml version="1.0" encoding="UTF-8"?>Se incluye en la producción.
Puedo utilizar XmlDocument ¿Quieres leer los archivos XLSX?
Los archivos de XLSX se manejan internamente por XlsxWorkbookSerializer.No hay API pública para extraer partes de archivo crudo. Workbook para todas las operaciones de carga/salvación XLSX.