xml模板的解析及应用

应用场景

  1. 消息模板
  2. 日志模板
  3. 其它(自行扩展)

xml模板示例

<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <group name="file" info="知识库管理">
        <action type="category_admin" info="FILE_LOG_ADD_ADMIN">
            <![CDATA[ 设置管理员:『{$unames}』]]>
        </action>
        <action type="attr_edit" info="编辑知识属性">
            <![CDATA[ 编辑了知识属性『{$name}』 ]]>
        </action>
        <action type="attr_del" info="删除知识属性">
            <![CDATA[ 删除了知识属性『{$name}』 ]]>
        </action>
    </group>
</root>

PHP解析示例

$var = unserialize($_data['data']);
$logFile = APP_PATH.'/Conf/logs.xml';
if(!file_exists($logFile)){
$this->error = '日志格式文件不存在';
return false;
}	
$content =  fetch($logFile, $var,'UTF8','application/json');

if(self::$domXml == null){
	self::$domXml = new \domDocument;
}	
self::$domXml->loadXml( $content );
unset($content);	
$dom  = @simplexml_import_dom(self::$domXml);
if( $_data['group'] ){
	$result = $dom->xpath("//root/group[@name='".$_data['group']."']/action[@type='".$_data['action']."']");
}else{
$result = $dom->xpath("//root/action[@type='".$_data['action']."']");
}
//异常情况
$return = array('info'=>'无法解析日志内容','data'=>'无法解析日志内容');
if($result){
$return['info']    = (string) $result[0]['info'];
	$return['data'] = trim( (string)$result[0] );
}
return $return;

数据示例

$data = [
	'id' => '3596'
	'uid' => '3'
	'group' => 'file'
	'ext_id1' => '223'
	'ext_id2' => '0'
	'action' => 'attr_del'
	'ip' => '172.17.0.1'
	'data' => 'a:1:{s:4:'name';s:3:'222';}'
	'url' => 'xxx'
	'ctime' => '1632388259'
	'keyword' => '222'
]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值