我使用PHP访问Web服务,该服务以XML格式返回单个用户的数据,并将其存储在名为$results_users_xml
的变量(包括prolog标记)中。
$results_users_xml
内容:
<?xml version="1.0" encoding="UTF-8"?>
<User xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dmu="http://www.digitalmeasures.com/schema/user-metadata" username="ppurfiel" dmu:userId="1600263">
<FirstName>Patrick</FirstName>
<LastName>Purfield</LastName>
<Email>ppurfiel@msudenver.edu</Email>
<LocalAuthentication/>
<dmu:Schemas xlink:type="simple" xlink:href="/login/service/v4/UserSchema/USERNAME:ppurfiel"/>
<dmr:Roles xmlns:dmr="http://www.digitalmeasures.com/schema/role-metadata" xlink:type="simple" xlink:href="/login/service/v4/UserRole/USERNAME:ppurfiel"/>
</User>
从这个XML字符串我已经存储了现有的Prolog标签,如下所示:
$orig_xml_tag = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
我已经定义了一个包含所需Prolog标签的变量:
$xsl_tag = "<?xml-stylesheet type=\"text/xsl\" href=\"curl_test.xsl\"?>";
在包含XML数据($results_users_xml
)的变量中,我想用原始的Prolog标记($orig_xml_tag
)替换所需的Prolog标记($xsl_tag
)。结果将存储在一个新变量中。
我一直在尝试不同的PHP函数,包括str_replace()
和substr_replace()
,但在每种情况下,原始Prolog都不会被所需的Prolog取代。例如,我尝试过:
echo str_replace($orig_xml_tag, $xsl_tag, $results_users_xml);
echo substr_replace($orig_xml_tag, $xsl_tag, 0);
但在每种情况下,所需的替换都不起作用,原始XML值($results_users_xml
)保持不变。
非常感谢任何和所有的帮助, 帕特里克