原文地址:
http://hyperstruct.net/2007/6/26/literal-xml-in-erlang-with-parse-transform-2
One of the things I dislike about Erlang is that it severely impairs bragging opportunities. Yesterday I wrote a module that allows writing literal XML in the source and have it parsed into Erlang structures at compile time—sort of like E4X minus the manipulation goodies at runtime (at least for now).
You write:
Doc = '<greeting>Hello!</greeting>',
io:format("~p~n", [Doc]).
And it prints…
{xmlElement,greeting,
greeting,
[],
{xmlNamespace,[],[]},
[],
1,
[],
[{xmlText,[{greeting,1}],1,[],"Hello!",text}],
[],
"/tmp",
undeclared}
In most languages I’m familiar with, this would have granted the author instant Yacc-demigod status. With Erlang… it was less than 40 LOC. Hardly something you’d wear at a party.
Anyway, this code owes everything to Philip’s writings. It also uses parse_transform/2, and “programmers are strongly advised not to engage in parse transformations and no support is offered for problems encountered”. So unless you, like me, are still at the kid-in-a-candy-shop stage of Erlang experience, think twice before using this in production, ok?
The code is here
http://repo.hyperstruct.net/inline_xml/
分享到:
相关推荐
因此,在实际应用中,如果可能,应优先考虑更安全的替代方法,如使用`ast.literal_eval()`(仅限于基本数据类型)或第三方库,如`numexpr`(针对数值计算)。 **`ast.literal_eval()`** 是另一个内置函数,它能安全...
<field column="column2" name="field2"/> <!-- ... --> </entity> </document> </dataConfig> ``` 现在,我们需要集成IK分词器。IK分词器是针对中文的优秀分词工具,它可以对中文进行有效的分词处理。在`my_...
注意,如果遇到类似`ratecontrol.cpp:56:28: error: unable to find string literal operator 'operator""opt' with 'const char [4]', 'unsigned int' arguments`的错误,可能是因为`opt`前缺少空格,需要修正。...
2. Mode属性:用于指定Literal控件的显示模式,包括Transform、PassThrough和Encode三种模式。 3. Encode方法:用于将Literal控件的文本内容进行HTML编码。 Literal控件的使用注意事项 在使用Literal控件时需要...
《Literal Pool:深入理解与应用》 在计算机科学领域,特别是编程语言和系统设计中,"Literal Pool"(常量池)是一个至关重要的概念。它主要用于存储程序中的各种静态数据,如字符串字面量、数字、符号引用等,旨在...
2. Mode:此属性用于指定Literal控件的行为模式,有三种可选值:`PassThrough`(默认),`Encode`和`Transform`。`PassThrough`模式下,Literal控件不处理文本,直接输出;`Encode`模式会将文本HTML编码,防止XSS...
在JavaScript编程语言中,"对象字面量"(Object Literal)是一种创建对象的简洁方式,类似于其他编程语言中的字典或映射结构。这个压缩包文件`object-literal-gc.rar_objects`及其包含的文件,如`7.3-10.js`、`7.3-...
生成的客户端代码将使用document/literal风格发送XML请求,并处理XML响应。 在实际应用中,document/literal风格的Web服务有以下几个优点: 1. **互操作性**:由于它依赖于标准的XML Schema,不同平台和语言的实现...
AXIS2 RCP,全称为Axis2 Remote Client Protocol,是Apache Axis2框架的一部分,用于构建分布式Web服务客户端。在处理SOAP(Simple Object Access Protocol)消息时,Axis2 RCP提供了不同的方式来定义消息的payload...
然后您将获得如下输出: ~/Desktop/babel-with-recast (master):ghost: $ node ./Users/kdodds/Desktop/babel-with-recast/node_modules/babel-core/lib/transformation/file/index.js:605 throw err; ^Error: ...
Checkstyle 的 XML 扩展此扩展为 checkstyle 提供了检查 XML 文件的能力。 构建 jar,将其添加到类路径并通过 XML 运行 checkstyle!映射类型从 Java 转换为重用可用的检查。 这是当前的映射: DOCUMENT 对应于 Java...
> node_modules/cache-manager/lib/caching.js:28:21: warning: This call to "require" will not be bundled because the argument is not a string literal (surround with a try/catch to silence this warning)...
×gSOAP支持WSDL 1.1, SOAP 1.1, SOAP 1.2, SOAP RPC 编码方式以及 literal/document 方式. ×gSOAP是少数完全支持SOAP1.1 RPC编码功能的工具包,包括多维数组及动态类型。比如,一个包含一个基类参数的远程方法...
protected void Literal2_Load (object sender, EventArgs e) { string query = "select Team ,Points from tb_charts"; StringBuilder xmlData = new StringBuilder(); using(SqlDataReader dr = SQLDBHelper...
cvc-complex-type.2.4.a: Invalid content was found starting with element 'page-encoding'. One of '{"http:// java.sun.com/xml/ns/javaee":include-prelude, ...
### Python中函数eval和ast.literal_eval的区别详解 #### 前言 在Python编程中,经常需要处理字符串与各种数据类型(如列表、元组、字典)之间的转换。为了实现这种转换,Python提供了`eval()`函数。然而,`eval()...
001-glib-gdate-suppress-string-format-literal-warning.patch 001-glib-gdate-suppress-string-format-literal-warning.patch 001-glib-gdate-suppress-string-format-literal-warning.patch
explain PLAN [ SET STATEMENT_ID [=] <string literal>] [INTO <table_name>] FOR <sql_statement> ``` - `STATEMENT_ID` 是一个可选的唯一标识符,用于区分不同的执行计划。 - `TABLE_NAME` 是存放执行计划的表名...
- **literal**:输出原始文本而不进行任何解析。 - **php**:直接在模板中执行PHP代码。 - **section/sectionelse**:遍历数组的复杂循环结构。 - **strip**:去除字符串中的空白字符和换行符。 #### 自定义函数 ...