编写XML时,最好是手工编写,还是在PHP中使用simpleXML之类的生成器?

编写XML时,最好是手工编写,还是在PHP中使用simpleXML之类的生成器?,php,xml,language-agnostic,Php,Xml,Language Agnostic,我通常手工编写xml,如下所示: <tag><?= $value ?></tag> 找到了simpleXML之类的工具后,我应该改用它们吗?使用这样的工具有什么好处?好的XML工具将确保生成的XML文件能够正确验证您正在使用的DTD 好的XML工具还可以节省大量重复键入的标记。使用生成器 使用生成器的优点是您具有一致的标记,并且不会冒着在括号或引号中过多的风险,也不会忘记对某些内容进行编码。这是至关重要的,因为这些错误只有在运行时才会被发现,除非您有重要

我通常手工编写xml,如下所示:

<tag><?= $value ?></tag>


找到了simpleXML之类的工具后,我应该改用它们吗?使用这样的工具有什么好处?

好的XML工具将确保生成的XML文件能够正确验证您正在使用的DTD

好的XML工具还可以节省大量重复键入的标记。

使用生成器


使用生成器的优点是您具有一致的标记,并且不会冒着在括号或引号中过多的风险,也不会忘记对某些内容进行编码。这是至关重要的,因为这些错误只有在运行时才会被发现,除非您有重要的测试来确保没有错误。

如果您处理的是少量XML,那么手工操作没有什么害处(只要您可以避免输入错误)。但是,对于较大的文档,通常最好使用编辑器,它可以根据模式验证文档并防止键入错误。

手写并不总是最佳做法,因为在较大的XML中,您可能会写入错误的标记,并且很难找到错误的原因。因此,我建议使用XMl解析器来创建XMl文件。

始终使用某种工具。XML可能非常复杂,我知道PHP的人习惯于使用黑客的小东西,但是如果有人不使用System.XML来创建XML,.NET世界中会有一股巨大的代码味道。

使用一个好的XML生成器将大大减少由于手指粗大、注意力不集中或其他人类弱点导致的潜在错误。但是,有几种不同级别的机器辅助可供选择:

  • 至少,使用程序员的文本编辑器来进行语法高亮显示和自动缩进。仅仅注意到你的文本颜色与你预期的不同,或者没有按照你预期的方式排列,就可能提示你可能会出现错误,否则你可能会错过

  • 更好的是,退一步,将XML作为您喜欢的任何语言的数据结构编写,而不是将该数据结构转换为XML。Perl为您提供了一些模块,如用于小作业的轻量级模块或更高的模块;使用
    XML::Simple
    只需将内容安排到一个标准的Perl散列中,并通过适当的方法运行即可

  • -steve

    您可以使用,这可能会非常麻烦,无法对其进行编码。我个人的观点是,从头开始编写XML文档最有效的方法是PHP附带的,并且在最新版本中默认启用

    $w=new XMLWriter();
    $w->openMemory();
    $w->startDocument('1.0','UTF-8');
    $w->startElement("root");
        $w->writeAttribute("ah", "OK");
        $w->text('Wow, it works!');
    $w->endElement();
    echo htmlentities($w->outputMemory(true));
    

    通过任何类型的字符串操作生成XML都会打开漏洞进入代码的大门。例如,您发布的一个非常简单的示例,如果$value包含一个符号,就不会生成格式良好的XML


    XML中没有太多的边缘情况,但是有足够多的边缘情况,编写自己的代码来处理它们是浪费时间的。(如果你不处理它们,你的代码总有一天会出人意料地失败。没有人希望这样。)任何好的XML工具都会自动处理这些情况。

    eclipse中的XML工具也非常有用。只需创建一个新的xml模式和文档,就可以轻松地使用大多数图形工具。我想指出的是,事先了解模式是如何工作的将是有用的。

    速度可能是一个问题。。。手写可以快得多。

    嘿,不要抨击PHP程序员!仅仅因为PHP本身并不鼓励编写好的代码,所以不要认为我们中没有人这样做!