当我创建XML文档时,我使用Perl,但这个问题与语言无关。大多数人似乎使用XML :: Writer或XML :: LibXML等工具完成此任务。它看起来像这样:
my $writer = XML::Writer->new();
my $type = "fancy";
$writer->startTag("pants");
$writer->characters($type);
$writer->endTag("pants");
我有点讨厌这个。感觉就像您作为初学者Web开发人员创建的第一个网页,您将所有HTML,CSS和PHP代码混合在同一个文件中,因为您尚未了解MVC。每个人都认为这很糟糕,我们应该将这一切分开,并尽可能地将语言分开。如果没有别的话,它会提高可读性。
那么为什么将XML放在我们的Perl代码中呢?我的想法是使用Template :: Toolkit,就像我们使用HTML一样。所以它看起来像这样:
<pants>
[% type %]
<pants>
之后,我可以将结果粘贴到XML :: LibXML中并验证字符串。
但我不认为有人这样做。为什么不?我错过了什么吗?
答案 0 :(得分:3)
我已将Template::Toolkit用于XML。我也使用了更加程序化的XML::Writer风格方法。
如果你有一个固定的XML结构,你只需要填入数据并且你已经有了Template :: Toolkit,那么使用一个TT模板来实现你的XML很有意义;在这种情况下使用模板可能会使正确匹配所需模式变得容易得多。但是,当然,要小心正确地转义和编码XML的所有内容而不是HTML。
如果你以编程方式将任意结构化数据转换为XML,那么XML :: Writer可能是一个更好的选择:如果你没有固定的模式,那么就没有任何模板了。
XML通常用作便携式数据序列化格式。原型示例从一些嵌套的HoHoA数据结构开始,并通过通用序列化接口将其转换为XML。序列化系统只有一个数据结构可供使用,因此模板没有结构。
此外,人们倾向于使用他们学习的第一种技术,即使有更好的方法。我猜大多数人首先会遇到XML用于数据序列化(而不是结构文档存储),因此即使模板方法更清晰,他们也会继续使用序列化技术。
所有这些(甚至是第一段)同样适用于JSON(甚至是HTML)。