Sese Framework  x.y.z
A cross-platform framework
载入中...
搜索中...
未找到
XmlUtil.h
浏览该文件的文档.
1// Copyright 2024 libsese
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
23#pragma once
24
26#include "sese/io/Stream.h"
28
29#include <queue>
30
31namespace sese::xml {
32
34class XmlUtil final : public NotInstantiable {
35public:
38 using Tokens = std::queue<std::string>;
39
40 XmlUtil() = delete;
41
46 static Element::Ptr deserialize(const InputStream::Ptr &input_stream, size_t level) noexcept;
47
52 static Element::Ptr deserialize(InputStream *input_stream, size_t level) noexcept;
53
57 static void serialize(const Element::Ptr &object, const OutputStream::Ptr &output_stream) noexcept;
58
62 static void serialize(const Element::Ptr &object, OutputStream *output_stream) noexcept;
63
64private:
65 static void tokenizer(InputStream *input_stream, Tokens &tokens) noexcept;
66
67 static bool removeComment(Tokens &tokens) noexcept;
68
69 static Element::Ptr createElement(Tokens &tokens, size_t level, bool is_sub_element) noexcept;
70};
71} // namespace sese::xml