php simplexml_加载带有htmlspecialchars的文件

php simplexml_加载带有htmlspecialchars的文件,php,xml,xml-parsing,simplexml,htmlspecialchars,Php,Xml,Xml Parsing,Simplexml,Htmlspecialchars,我使用以下代码获取XML的内容: $xml = simplexml_load_file("X.xml"); echo $xml->CountryList->Country[1]; $xml = simplexml_load_file($url); echo $xml->CountryList->Country[1]; 以下是X.xml文件: <PickUpCityListRQ> <CountryList> <Country&g

我使用以下代码获取XML的内容:

$xml = simplexml_load_file("X.xml");
echo $xml->CountryList->Country[1];
$xml = simplexml_load_file($url);
echo $xml->CountryList->Country[1];
以下是X.xml文件:

<PickUpCityListRQ>
  <CountryList>
    <Country>Albania</Country>
    <Country>Andorra</Country>
  </CountryList>
</PickUpCityListRQ>
我不工作了。 有什么想法吗?
提前感谢。

htmlspecialchars
用于保护HTML内容页中的特殊字符(特别是在用户输入时,以避免某种XSS或其他攻击…)

在处理URL时,应改为使用
urlencode
将内容作为URL的参数发送

因此,您的URL将是:

http://someserver/somethink/services/ServiceRequest.do?xml=%3CPickUpCityListRQ%3E%3CCredentials%20username%3D'USERNAME'%20password%3D'PASS‌​WORD'%20remoteIp%3D'IP'%2F%3E%3CCountry%3EUK%3C%2FCountry%3E%3C%2FPickUpCityListR‌​Q%3E
正如文档所述,
urldecode
不是必需的,因为超全局$\u GET和$\u请求已经被urldecode。因此,在执行任务的脚本中,您可以直接使用$\u GET条目中的值

$xml = simplexml_load_string($_GET['xml']);
文档:

答案从

用这个

$username = "USERNAME";
$password = "PASSWORD";
$accessurl = "Credentials username='$username' password='$password' remoteIp='123.123.123.123'/";
$required = "<PickUpCityListRQ><$accessurl><Country>UK</Country></PickUpCityListRQ>";

$url= rawurlencode("somelink/service/ServiceRequest.do?xml={$required}");

$xml = simplexml_load_file($url);
echo $xml->CountryList->Country[1];
$username=“username”;
$password=“password”;
$accessurl=“凭证用户名='$username'密码='$password'远程IP='123.123.123'/”;
$required=“英国”;
$url=rawurlencode(“somelink/service/ServiceRequest.do?xml={$required}”);
$xml=simplexml\u加载文件($url);
echo$xml->CountryList->Country[1];

对不起。但是,我不知道我需要urlencode做什么。当我使用第四个“代码容器”中的代码时,它会返回正常链接。问题是$xml=simplexml\u load\u文件($url);不想读取该链接1)您必须进行URL编码,因为您的内容中有一些字符应该在URL(空格,…)中进行保护。如果我对您的内容进行URL编码,我将获得:
%3CPickUpCityListRQ%3E%3CCredentials%20username%3D'用户名“%20password%3D”密码“%20remoteIp%3D”IP“%2F%3E%3CCountry%3EUK%3C%2FCountry%3E%3C%2PickupCitylistrq%3E
。2) 由于URL参数是一个内容,而不是一个文件,因此必须使用
simple\u xml\u load\u string
而不是
simple\u xml\u load\u file
否,在将参数放入URL之前只需
urlencode
即可。在URL表示的PHP脚本上,只需
simple\u xml\u load\u string($\u GET['xml'])
即可加载xml内容。在这种情况下,不要忘了标记你的最佳答案。即使我尝试从X.xml获取内容。$required=urlencode($required);$url='X.xml';$xml=simplexml_load_string($_GET['$url']);;echo$xml->CountryList->Country[1];什么也不返回。。你的评论似乎令人困惑。如果要直接从文件加载XML内容,只需使用
$XML=simple\u XML\u load\u file(“your\u file.XML”)
。但是,如果要将XML内容发送到将处理此XML的特定脚本(到特定URL),则必须对XML内容进行URL编码(因为它在URL上传输),将其作为URL的参数。在执行此任务的脚本上,只需使用
simple\u XML\u load\u字符串($\u GET['your\u param\u name'])从参数(应为$\u GET)加载XML即可
$xml = simplexml_load_string($_GET['xml']);
$username = "USERNAME";
$password = "PASSWORD";
$accessurl = "Credentials username='$username' password='$password' remoteIp='123.123.123.123'/";
$required = "<PickUpCityListRQ><$accessurl><Country>UK</Country></PickUpCityListRQ>";

$url= rawurlencode("somelink/service/ServiceRequest.do?xml={$required}");

$xml = simplexml_load_file($url);
echo $xml->CountryList->Country[1];