正则表达式可在任何xml标记中添加属性

我已经将格式良好的xml文档转换为字符串变量。我想使用preg_replace向每个xml标签添加定义的属性。

例如替换:

<tag1>

<tag2> some text </tag2>

</tag1>

通过:

<tag1 attr="myAttr">

<tag2 attr="myAttr"> some text </tag2>

</tag1>

因此,我基本上需要regex表达式来查找任何开始标记并添加我的属性,但是我是一个完整的regex新手。

回答:

不要在XML上使用正则表达式。Xml不是常规语言。请改用php的xml扩展名:

$xml = new SimpleXml(file_get_contents($xmlFile));

function process_recursive($xmlNode) {

$xmlNode->addAttribute('attr', 'myAttr');

foreach ($xmlNode->children() as $childNode) {

process_recursive($childNode);

}

}

process_recursive($xml);

echo $xml->asXML();

所有包含正则表达式的答案都将破坏此有效xml,例如:

<?xml version="1.0" encoding='UTF-8'?>

<html>

<head>

<!-- <meta> ... </meta> -->

<script>//<![CDATA[

function load() {document.write('<tt>Test</tt>');}

//]]></script>

<title><![CDATA[Fancy <<SiteName>> [with Breadcrumbs] > in > title]]></title>

</head>

<body onload="load()">

<input

type="submit"

value="multiline

button

text"

/>

</body>

</html>

以上是 正则表达式可在任何xml标记中添加属性 的全部内容, 来源链接: utcz.com/qa/406755.html

回到顶部