#xml-data #xml #inline #embed #macro

inline-xml

直接在您的 Rust 代码中嵌入 XML 数据

11 个版本

0.3.2 2023年5月18日
0.3.1 2023年4月8日
0.2.5 2023年4月6日
0.2.3 2023年3月7日
0.1.2 2023年3月6日

#2807解析器实现


被用于 inline-css

LGPL-3.0-or-later

30KB
678

inline-xml

直接将 XML 数据嵌入到您的 Rust 代码中。

示例

use inline_xml::xml;

fn main() {
    let value = 42;
    let html = xml! {
        <html>
            <head>
                <title>Example</title>
            </head>
            <body>
                <h1>Example</h1>
                <p>Hello World</p>
                <p>Value: {value}</p>
            </body>
        </html>
    };
    
    println!("{html}");
}

语法问题

由于 Rust 将对输入进行标记化,且 proc_macro_span 尚未稳定,因此空白将被丢弃,因此 inline_xml 必须猜测在打印时放置空白的位置。

待办事项

  • 完全消除对 Content::Nested 的使用
  • 更多文档
  • 在文档中提及,结构体 Xml 可以接受多个标签
  • 将结构体 Tag 实例化为 trait ToXml
  • 参数 -> 属性,参数 -> 属性列表
  • 修复属性中的 XML 注入
  • 修复浮点字面量的解释
  • 以某种方式生成 XML & DTD 声明(可能作为格式参数)
  • 命名空间(例如,<a:x>asdf</a:x>

依赖项

~1.5MB
~36K SLoC