如何使用php访问由XML Schema声明的XML元素的属性?


using php, how do I access XML element's attributes declared by XML Schema declaration?

我有一个位于指定URL的xml文件,其中包括一个降水概率节点,该节点有几个"值"元素,其模式实例声明允许它们为空。但是,php中的attributes()函数不显示该元素的XSI声明。

$feedURL= "http://forecast.weather.gov/MapClick.php?lat=32.78520&lon=-79.99400&FcstType=dwml";
// read feed into SimpleXML object
$wxml = simplexml_load_file($feedURL);
echo $wxml->data->parameters->{'probability-of-precipitation'}->value[0]->attributes();

是否可以打印"XSI属性"??由于

在这个$feedURL变量的情况下,传递的XML文件包括一个XML命名空间指令,该指令指定"XSI"前缀的命名空间由URI"http://www.w3.org/2001/XMLSchema-instance"引用。"

因此,为了访问与value[0]元素相对应的属性(@attributes)集合,您需要在属性函数参数值中指定此URI,例如:
print_r($wxml->data->parameters->{'probability-of-precipitation'}->value[0]->attributes('the_XSI_prefix's_URI'));

上面的代码将在浏览器中输出:

Nil,

如果在当前版本的http://forecast.weather.gov/MapClick.php?lat=32.78520&lon=-79.99400&FcstType=dwml XML文件中传入了xsi:nil="true"指令。