【问题标题】:PHP - Using special characters in XML tagPHP - 在 XML 标签中使用特殊字符
【发布时间】:2018-04-14 22:23:23
【问题描述】:

您好,我正在使用 PHP,我编写了一个应用程序,该应用程序使用数据库查询的结果创建和填充 SimpleXMLObject。结果保存为标签。我用

完成了这个
if (!isset($set->$parttemp)) {
$parttemp = "$parttemp &#40 $groupname &#41";
$set = $set->addChild($parttemp);
}

我的问题是,我想在 XML 标签中使用特殊字符。经过一番研究,我发现您需要使用该字符的代码,例如“(”,您需要编写(

但如果您想在标签中使用这些代码,您还需要用该代码替换标签。例如对于 我需要写< permission ( s ) / >

这没什么大不了的,但是标签是通过 addChild 操作设置的,所以我无法操纵它们。还有其他解决方案吗?

【问题讨论】:

  • 我认为您不能在 XML 元素名称中使用括号。看看here
  • hmmm.. 据我了解,您还必须使用 w3 下推荐的相应代码创建标签
  • 您的部分困惑似乎在于子元素是什么。 < permission ( s ) / >,不是一个元素,它只是一些文本,比如foo,或M. Anderson<foo>hello</foo> 是一个名为foo 的元素,其文本内容为hello。子元素是结果文档的结构部分,它的名称必须遵循一定的规则,无论您如何尝试转义。
  • 哦,我明白了。所以我之前尝试的只是创建了纯文本而不是实际的子元素。谢谢你清理我。

标签: php xml simplexml addchild


【解决方案1】:

像“(”这样的标点符号在 XML 元素或属性名称中无效。尝试转义它们(例如作为十进制字符引用 ()是没有用的 - 名称中无法识别字符引用。

您必须找到一些应用程序级别的方法将字符串编码为有效名称。例如,我见过人们使用<permission_x28_s_x29_>

不过,通常我更喜欢<element name="permissions(s)">

【讨论】:

  • 感谢您花时间回答我的问题。处理name属性似乎是一个不错的解决方案,我会尝试一下,一有结果就写在这里。
猜你喜欢
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2011-02-24
  • 1970-01-01
相关资源
最近更新 更多