ladybird/Userland/Libraries/LibXML/DOM/Node.h
Ali Mohammad Pur 67357fe984 LibXML: Add a fairly basic XML parser
Currently this can parse XML and resolve external resources/references,
and read a DTD (but not apply or verify its rules).
That's good enough for _most_ XHTML documents as the HTML 5 spec
enforces its own rules about document well-formedness, and does not make
use of XML DTDs (aside from a list of predefined entities).

An accompanying `xml` utility is provided that can read and dump XML
documents, and can also run the XML conformance test suite.
2022-03-28 23:11:48 +02:00

40 lines
721 B
C++

/*
* Copyright (c) 2022, Ali Mohammad Pur <mpfard@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/NonnullOwnPtrVector.h>
#include <AK/String.h>
#include <AK/Variant.h>
#include <AK/Vector.h>
#include <LibXML/FundamentalTypes.h>
namespace XML {
struct Attribute {
Name name;
String value;
};
struct Node {
struct Text {
StringBuilder builder;
};
struct Comment {
String text;
};
struct Element {
Name name;
HashMap<Name, String> attributes;
NonnullOwnPtrVector<Node> children;
};
bool operator==(Node const&) const;
Variant<Text, Comment, Element> content;
Node* parent { nullptr };
};
}