Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
XmlInfo.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* XmlInfo.h (C) 2000-2006 */
9/* */
10/* Informations sur un fichier XML. */
11/*---------------------------------------------------------------------------*/
12
13#ifndef ARCANE_XMLINFO_H
14#define ARCANE_XMLINFO_H
15
16#include "arcane/utils/Iostream.h"
17#include "arcane/ArcaneException.h"
18#include "arcane/IApplication.h"
19#include "arcane/IXmlDocumentHolder.h"
20#include "arcane/IIOMng.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25ARCANE_BEGIN_NAMESPACE
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30/*!
31 * \internal
32 * \brief Informations sur un fichier XML.
33 *
34 * Classe de base des classes stockant les informations lues dans les
35 * fichiers XML. Un élément XML nommé XXX aura ses informations stockées
36 * dans une classe XXXInfo.
37 */
39{
40 public:
41 XmlInfo(IApplication* mng=0) : m_mng(mng) {}
42 virtual ~XmlInfo() {};
43
44 public:
45 /**
46 * Leve une exception concernant l'élément XML "element" avec le message "msg".
47 * @param element élément XML concerné par l'exception.
48 * @param msg message de l'exception.
49 */
50 static void error(const XmlNode& element, const String msg)
51 {
52 OCStringStream msgStr;
53 msgStr() << "** Error: Element <" << element.name()
54 << ">: " << msg << '.';
55 throw InternalErrorException("XmlInfo::_error", msgStr.str());
56 }
57
58 /**
59 * Affiche le message d'avertissement "msg" concernant l'élément XML "element".
60 * @param element élément XML concerné par l'exception.
61 * @param msg message de l'exception.
62 */
63 static void warning(const XmlNode& element, const String msg)
64 {
65 cerr << "** Warning: Element <" << element.name()
66 << ">: " << msg << ".\n";
67 }
68
69 /**
70 * Leve une exception concernant l'élément XML "element" en précisant que
71 * l'attribut "attr_name" a été oublié dans le fichier XML.
72 * @param element élément XML concerné par l'exception.
73 * @param attr_name nom de l'attribut concerné.
74 */
75 static void attrError(const XmlNode& element, const char* attr_name)
76 {
77 OCStringStream msg;
78 msg() << "Attribute \"" << attr_name << "\" not specified";
79 error(element, String(msg.str()));
80 }
81
82 /**
83 * Retourne le noeud racine du fichier XML nommé "file_name". Si un nom
84 * de schéma est passé en argument, la conformité du fichier au schéma
85 * est vérifié.
86 * @return le noeud XML racine du document.
87 * @param file_name le nom du fichier XML.
88 * @param mng le gestionnaire d'entrées/sorties Arcane.
89 * @param schema_name le nom du schéma associé au fichier (optionnel).
90 */
91 static XmlNode rootNode(IIOMng* mng,
92 const String& file_name,
93 const String& schema_name = String())
94 {
95 IXmlDocumentHolder* xml_doc = mng->parseXmlFile(file_name.local(),
96 schema_name.local());
97 if (!xml_doc)
98 {
99 OCStringStream s;
100 s() << "Can't read the file \"" << file_name << "\"";
101 throw InternalErrorException("XmlInfo::rootNode",s.str());
102 }
103 return xml_doc->documentNode().documentElement();
104 }
105
106 protected:
107 /** Gestionnaire de l'application. */
109};
110
111/*---------------------------------------------------------------------------*/
112/*---------------------------------------------------------------------------*/
113
114ARCANE_END_NAMESPACE
115
116/*---------------------------------------------------------------------------*/
117/*---------------------------------------------------------------------------*/
118
119#endif
Interface de l'application.
Interface du gestionnaire des entrées sorties.
Definition IIOMng.h:42
virtual IXmlDocumentHolder * parseXmlFile(const String &filename, const String &schemaname=String())=0
Lit et analyse le fichier XML filename.
Gestionnaire d'un document DOM.
virtual XmlNode documentNode()=0
Noeud document. Ce noeud est nul si le document n'existe pas.
static void error(const XmlNode &element, const String msg)
Definition XmlInfo.h:50
static XmlNode rootNode(IIOMng *mng, const String &file_name, const String &schema_name=String())
Definition XmlInfo.h:91
static void warning(const XmlNode &element, const String msg)
Definition XmlInfo.h:63
IApplication * m_mng
Definition XmlInfo.h:108
static void attrError(const XmlNode &element, const char *attr_name)
Definition XmlInfo.h:75
Noeud d'un arbre DOM.
Definition XmlNode.h:51
XmlNode documentElement() const
Retourne le noeud élément du document.
Definition XmlNode.cc:556
String name() const
Nom du noeud.
Definition XmlNode.cc:132
Chaîne de caractères unicode.