14#include "arcane/core/XmlNode.h"
16#include "arcane/utils/StringBuilder.h"
17#include "arcane/utils/NotImplementedException.h"
18#include "arcane/utils/Iterator.h"
19#include "arcane/utils/ValueConvert.h"
20#include "arcane/utils/Iostream.h"
21#include "arcane/utils/TraceInfo.h"
22#include "arcane/utils/FatalErrorException.h"
24#include "arcane/core/XmlException.h"
25#include "arcane/core/XmlNodeList.h"
26#include "arcane/core/XmlNodeIterator.h"
27#include "arcane/core/DomUtils.h"
45 bool operator()(
const XmlNode& node)
46 {
return node.
name()==m_name; }
125 return static_cast<eType>(m_node.nodeType());
136 return String(m_node.nodeName());
154 if (m_node.nodeType()==dom::Node::ATTRIBUTE_NODE){
158 else if (m_node.nodeType()==dom::Node::ELEMENT_NODE){
161 for(
XmlNode i=
p.front(); i!=(*this); ++i )
162 if (i.isNamed(
name()))
174 if (m_node.nodeType()==dom::Node::ATTRIBUTE_NODE){
192 return m_node.nodeName()==
name;
214 if (m_node.nodeType()==dom::Node::ELEMENT_NODE){
215 domutils::textContent(m_node,v);
228 if (s.
null() && throw_exception){
248attr(
const String& name,
bool throw_exception)
const
250 dom::Element
elem(m_node);
255 if (throw_exception &&
attr_node.null()){
268 dom::Element
elem(m_node);
285 dom::Element
elem(m_node);
311 dom::Node
parent = m_node.parentNode();
314 parent.removeChild(m_node);
423 " Valid values are 'true', 'false', '0' (zero) ou '1'.",
438 if (builtInGetValue(v,
value))
440 _throwBadConvert(
"Integer",
value);
454 if (builtInGetValue(v,
value))
456 _throwBadConvert(
"Int64",
value);
470 if (builtInGetValue(v,
value))
472 _throwBadConvert(
"Real",
value);
520 if (m_node.nodeType()==dom::Node::ELEMENT_NODE)
521 return domutils::textContent(m_node);
522 return String(m_node.nodeValue());
558 dom::Document
doc(m_node);
561 return _build(
doc.documentElement());
570 dom::Attr
attr(m_node);
580createElement(
const String& name)
589createAndAppendElement(
const String& name,
const String& value)
600createAndAppendElement(
const String& name)
613 dom::Document
doc(m_node);
615 doc = m_node.ownerDocument();
627 "createNode() not implemented for node type {0}",(
int)
type);
647 dom::Document
doc(m_node);
649 doc = m_node.ownerDocument();
661 "createNode() not implemented for node type {0}",(
int)
type);
670_build(
const dom::Node& node)
const
710 _findNextValid(
true);
717XmlNodeNameIterator(
const XmlNode& from,
const char* ref_name)
720, m_ref_name (String(ref_name))
722 _findNextValid(
true);
728void XmlNodeNameIterator::
729_findNextValid(
bool is_init)
732 m_current = m_parent.
front();
734 if (m_current.
null())
738 while (!m_current.
null()){
739 if (m_current.
isNamed(m_ref_name))
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
XmlElement(XmlNode &parent, const String &name, const String &value)
Créé un élément fils de parent. L'élément créé a pour nom name et pour valeur value....
Exception liées aux fichiers XML.
Liste de noeuds d'un arbre DOM.
XmlNode attr(const String &name, bool throw_exception=false) const
Retourne l'attribut de nom name.
XmlNode prevSameType() const
Retourne le noeud précédent ce noeud ayant le même type.
String xpathFullName() const
Nom XPath du noeud avec ces ancêtres.
void setValue(const String &value)
Positionne la valeur du noeud.
void assignDomNode(const dom::Node &node)
XmlNode documentElement() const
Retourne le noeud élément du document.
void replace(const XmlNode &new_node, XmlNode &ref_node)
Remplace le noeud fils ref_node par le noeud new_node.
Int64 valueAsInt64(bool throw_exception=false) const
Valeur du noeud convertie en entier 64 bits. 0 si conversion échoue.
eType type() const
Type du noeud.
iterator end()
Retourne un iterateur sur le premier élément après la fin du tableau.
XmlNode insertAfter(const XmlNode &new_child, const XmlNode &ref_node)
Insère un noeud. Insère le noeud new_child après le noeud ref_node. Si new_child est nul,...
XmlNodeList children() const
Ensemble des noeuds fils de ce noeud.
void removeAttr(const String &name) const
Supprime l'attribut de nom name de ce noeud. Si ce noeud n'est pas élément, rien n'est effectué.
XmlNode prev() const
Noeud précédent (previousSibling())
String attrValue(const String &name, bool throw_exception=false) const
Valeur de l'attribut name.
Real valueAsReal(bool throw_exception=false) const
Valeur du noeud convertie en réel. Si la conversion échoue, si throw_exception vaut false retourne 0....
XmlNode childWithNameAttr(const String &elem_name, const String &attr_value) const
Retourne le fils de ce noeud ayant pour nom elem_name et un attribut de nom "name" avec pour valeur a...
XmlNode child(const String &name) const
Noeud fils de celui-ci de nom name.
void clear()
Supprime tous les noeuds fils.
XmlNode forceAttr(const String &name)
Retourne l'attribut de nom name. Si aucun attribut avec ce nom n'existe, un attribut avec comme valeu...
XmlNode xpathNode(const String &xpath_expr) const
Retourne un noeud à partir d'une expression XPath.
void append(const XmlNode &child_node)
Ajoute child_node comme fils de ce noeud.
String value() const
Valeur du noeud.
XmlNode front() const
Premier fils.
XmlNode createText(const String &value)
Créé un noeud texte.
bool null() const
Vrai si le noeud est nul.
XmlNode next() const
Noeud suivant (nextSibling())
eType
NodeType An integer indicating which type of node this is.
@ TEXT
The node is a Text node.
@ ELEMENT
The node is an Element.
bool isNamed(const String &name) const
Vrai si le nom de l'élément est name.
XmlNode ownerElement() const
Retourne l'élément propriétaire de cet attribut.
XmlNode expectedChild(const String &name) const
Noeud fils de celui-ci de nom name.
XmlNode nextWithName(const String &name) const
Retourne le noeud suivant ce noeud ayant le nom name.
Integer valueAsInteger(bool throw_exception=false) const
Valeur du noeud convertie en entier.
XmlNode parent() const
Parent de ce noeud (null si aucun)
iterator begin()
Retourne un iterateur sur le premier élément du tableau.
XmlNode nextSameType() const
Retourne le noeud suivant ce noeud ayant le même type.
void setAttrValue(const String &name, const String &value)
Positionne l'attribut name à la valeur value.
XmlNode childWithAttr(const String &elem_name, const String &attr_name, const String &attr_value) const
Retourne le fils de ce noeud ayant pour nom elem_name et un attribut de nom attr_name avec pour valeu...
String name() const
Nom du noeud.
bool valueAsBoolean(bool throw_exception=false) const
Valeur du noeud convertie en booléan.
XmlNode createNode(eType type, const String &name, const String &value)
Créé un noeud d'un type donné.
XmlNode prevWithName(const String &name) const
Retourne le noeud précédent ce noeud ayant le nom name.
dom::Node domNode() const
void remove()
Supprime ce noeud du document.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
Exception lorsqu'une fonction n'est pas implémentée.
Constructeur de chaîne de caractère unicode.
Chaîne de caractères unicode.
bool null() const
Retourne true si la chaîne est nulle.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-