Как да работим с XML обработка в C++

Как да работим с 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, преминаване през елементи и сериализиране на документи.

Постепенно ръководство

Първа стъпка: Постройте сградата

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 нишка

Използване на: 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 документ от нулата?

Да, използвай. XmlDocument::Build да се изгради документ програмно, след това използвайте XmlElement и в) XmlAttribute::MakeAttribute да добавяме възли.

- Да, нали? XmlDocument Поддържане на XPath заявки?

Не. Настоящата реализация предоставя само преминаване през елемента; XPath не се поддържа.

Какво прави кодирането? SaveToUtf8() Произвеждате ли?

Изходът винаги е UTF-8 кодиран XML. Декларацията на XML (<?xml version="1.0" encoding="UTF-8"?>) е включен в изхода.

Мога ли да използвам… XmlDocument Да четеш части от архива на XLSX?

Архивните части на XLSX се управляват от вътрешно ниво. XlsxWorkbookSerializer.Няма публично API за извличане на сурови архивни части. Използвайте Workbook за всички операции по зареждане/записване на XLSX.

Вижте също:

 Български