كيفية العمل مع المعالجة 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 ، وتجاوز العناصر ، وسلسلية الوثائق.

خطوة بخطوة دليل

الخطوة 1: إعداد البناء

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)

الخطوة الثانية: تضمين العناوين الرئيسية

#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 يستخدم نموذج قائم على المقبض عنصر يعود من مسار مفقود هو null. دائما تحقق 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 String

استخدام 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 فئات Mapper هي جزء من API العامة ويمكن استخدامها مباشرة.WorkbookXmlMapper, WorksheetXmlMapper,، الخ) هم المساعدون الداخليين الذين يدعوهم XlsxWorkbookSerializer ولا يُقصد استخدامها مباشرة.

هل يمكنني بناء مستند XML جديد من الصفر؟?

نعم، استخدمها. XmlDocument::Build لبناء وثيقة برمجية، ثم استخدام XmlElement و XmlAttribute::MakeAttribute لإضافة العقدة.

هل هو كذلك؟ XmlDocument دعم استفسارات XPath؟?

لا. التنفيذ الحالي يوفر تحويل عنصر فقط؛ XPath غير مدعوم.

ما الذي يفعله التشفير؟ SaveToUtf8() أنتج؟?

الخروج دائماً XML مشفر UTF-8. إعلان XML (<?xml version="1.0" encoding="UTF-8"?>) مدرجة في الناتج.

هل يمكنني استخدام XmlDocument لقراءة أجزاء الأرشيف XLSX؟?

يتم إدارة أجزاء أرشيف XLSX داخلياً بواسطة: XlsxWorkbookSerializer. لا يوجد واجهة برمجة التطبيقات العامة لاستخراج أجزاء الأرشيف الخام. استخدام Workbook لجميع عمليات تحميل/حفظ XLSX.

انظر أيضا

 العربية