XML の処理を使用する

XML の処理を使用する

XML 処理を扱う

Aspose.Cells FOSS for C++ は、XLSX ファイルを構成する Open XML 部分を読み書きするための軽量な内部 XML レイヤーを使用します。XmlDocumentXmlElement、および XmlAttribute クラスがこのレイヤーのコアを形成します。


XML ドキュメントの読み込み

インメモリのドキュメントツリーに XML 文字列またはファイルを解析するには、XmlDocument::Load を使用します:

#include "aspose/cells_foss/XmlDocument.h"

using namespace Aspose::Cells_FOSS;

// Load from string content
XmlDocument doc;
doc.Load("<root><item key=\"a\">value</item></root>");

XML の構築と保存

プログラムで XML ドキュメントを構築するには XmlDocument::Build を使用し、XmlDocument::SaveToUtf8 を使用してそれを UTF-8 文字列にシリアライズします:

XmlDocument doc;
// Build the document structure
auto xml = doc.SaveToUtf8();

要素の走査

XmlElementは、要素の値、子要素、属性への軽量ハンドルベースのアクセスを提供します。デフォルト構築された要素はIsNull() == trueを返し、これは安全なnullチェックとして使用できます:

XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
    // Traverse children via GetAttributes
    auto attrs = root.GetAttributes();
}

属性の操作

XmlAttributeは要素上の属性名と値のペアへのアクセスを提供します。新しい属性を作成するにはXmlAttribute::MakeAttribute(name, value)を使用してください:

XmlAttribute attr = XmlAttribute::MakeAttribute("key", "value");
bool isNull = attr.IsNull();

内部 XML マッパー

このライブラリは、専用のマッパークラスを使用して、インメモリのスプレッドシートモデルオブジェクトをXML表現に変換したり、逆に変換したりします。これらはシリアライズ層の内部で使用されます:

Mapper クラスResponsibility
WorkbookXmlMapperワークブックのリレーションシップ部分を読み書きします
WorksheetXmlMapper個別のワークシート XML 部分を読み書きします
StylesheetXmlMapperスタイル部分を読み書きします
SharedStringTableXmlMapper共有文字列テーブルを読み書きします

各マッパーはReadWriteメソッドを公開します。これらはXlsxWorkbookSerializerによって内部的に呼び出され、アプリケーションコードで直接使用することは想定されていません。


エラー処理

XMLのパースエラーはXmlParsingExceptionをスローします。信頼できない、または不正なXMLを読み込む際はこの例外を捕捉してください:

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

ヒントとベストプラクティス

  • 要素データにアクセスする前にXmlElement::IsNull()を確認してください — 存在しないパスの要素はnullハンドルを返します。
  • デバッグや中間XML状態のログ記録のためにシリアライズされた文字列を取得するにはXmlDocument::SaveToUtf8()を使用します。
  • アプリケーションコード内でマッパークラス(WorkbookXmlMapperWorksheetXmlMapperなど)を直接インスタンス化しないでください — 代わりにWorkbook::SaveWorkbook(filePath)を使用します。
  • XmlParsingExceptionは不正なXMLでスローされます;外部XMLのロードは常にtry/catchブロックでラップしてください。

一般的な問題

問題原因修正
IsNull() は true を返します期待されたパスに要素が見つかりませんトラバーサル前に XML の構造を検証してください
XmlParsingException のロード時不正な形式または非UTF-8 XMLLoad に渡す前に、入力 XML を検証してください
マッパーの出力が入力と異なります保存前のモデル変更Save を呼び出す前に、すべてのモデル変更がコミットされていることを確認してください

API Reference の概要

クラス/メソッド説明
XmlDocument::Load(content)XML 文字列を解析する
XmlDocument::Build()プログラムで文書を作成する
XmlDocument::SaveToUtf8()文書をUTF-8文字列にシリアライズする
XmlElement::IsNull()要素ハンドルが有効かどうかを確認する
XmlElement::GetValue()要素のテキストコンテンツを取得する
XmlElement::GetAttributes()属性コレクションを取得します
XmlAttribute::IsNull()属性ハンドルが有効かどうか確認する
XmlAttribute::MakeAttribute(name, value)新しい属性ハンドルを作成する
XmlParsingException不正な XML 入力があった場合にスローされます
WorksheetXmlMapper内部ワークシート XML の読み取り/書き込み
WorkbookXmlMapper内部ワークブック XML の読み書き

参照

 日本語