如何定义XML命名空间

时间:2017-03-24 14:21:37

标签: php xml simplexml

我正在尝试创建一个XML简单对象,但我不断收到有关未定义域的错误。我看到的所有示例都在XML文件中定义了某种类型的URL,但是我从CURL调用中收到的XML没有这些URL,所以我不完全确定要做什么。

<?xml version="1.0" encoding="UTF-8" ?>
<Items>
<Item>
<ActivityName>Faculty Lecture</ActivityName>
<ParentActivityName>Faculty Lecture</ParentActivityName>
<Description></Description>
<StartDate>2/1/2017 12:00:00 AM</StartDate>
<EndDate>2/1/2017 12:00:00 AM</EndDate>
<StartMinute>990</StartMinute>
<EndMinute>1080</EndMinute>
<CampusName>MAIN</CampusName>
<BuildingCode>LIB</BuildingCode>
<RoomNumber>105</RoomNumber>
<RoomName>News Events Room</RoomName>
<Customer:EventMeetingByActivityId.Event.Customer.Name>Library</Customer:EventMeetingByActivityId.Event.Customer.Name>
<ContactFirstName:EventMeetingByActivityId.Event.PrimaryCustomerContact.Person.FirstName>Jane</ContactFirstName:EventMeetingByActivityId.Event.PrimaryCustomerContact.Person.FirstName>
<ContactLastName:EventMeetingByActivityId.Event.PrimaryCustomerContact.Person.LastName>Doe</ContactLastName:EventMeetingByActivityId.Event.PrimaryCustomerContact.Person.LastName>
<MeetingType:EventMeetingByActivityId.EventMeetingType.Name>Meeting</MeetingType:EventMeetingByActivityId.EventMeetingType.Name>
</Item>
</Items>

以下是抛出警告的代码。

$data = simplexml_load_string($result);
$data->registerXPathNamespace('Customer', 'https://www.aaiscloud.com/');
$data->registerXPathNamespace('ContactFirstName', 'https://www.aaiscloud.com/');
$data->registerXPathNamespace('ContactLastName', 'https://www.aaiscloud.com/');
$data->registerXPathNamespace('MeetingType', 'https://www.aaiscloud.com/');

如果我编辑$ result并删除域名,那么警告会消失,但我不确定这是否是一件明智的事情。

1 个答案:

答案 0 :(得分:1)

XML文档中使用的任何名称空间前缀(例如Customer)必须在该XML文档中声明。

更改

<Items>

<Items xmlns:Customer="https://www.aaiscloud.com/">

还为XML中使用的其他名称空间前缀添加所有类似的声明。顺便说一句,习惯上(尽管不是必需的)使用名称空间前缀的短小写缩写 - 您可能希望从Customer切换到ccust或{{1 }}

相关问题