2017-03-24 3 views
0

XML 단순 개체를 만들려고하지만 정의되지 않은 도메인에 대한 오류가 계속 발생합니다. 내가 본 모든 예제는 XML 파일에 정의 된 URL의 일부 유형을 가지고 있지만 CURL 호출에서받은 XML에는 해당 URL이 없으므로 무엇을해야할지 완전히 확신하지 못합니다.XML 네임 스페이스를 정의하는 방법

<?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/'); 

$ 결과를 편집하고 도메인을 제거하면 경고가 사라 지지만이 작업이 현명한 작업인지 확실하지 않습니다.

답변

1

XML 문서 에 사용 된 모든 네임 스페이스 접두사 (예 : Customer)는 해당 XML 문서에서으로 선언해야합니다.

변경

<Items> 

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

는 또한 XML에 사용되는 다른 네임 스페이스 접두사에 대한 모든 유사한 선언을 추가합니다. 네임 스페이스 접두사에 짧은 소문자 약어를 사용하는 것은 일반적이지만, Customer에서 c, cust 또는 customer으로 전환 할 수 있습니다.

+0

$ 결과 (xml 파일)는 외부 회사에서 검색 한 것입니다. 이것은'simplexml_load_string' 전에 문자열을 조작해야한다는 것을 의미합니까? – blu

+1

선언되지 않은 네임 스페이스 접두사를 사용하는 "XML"이 제공되는 경우 XML이 전혀 제공되지 않습니다. 공급자에게 데이터를 수정하도록 알린다. 그럴 수 없다면 위에 나온 XML 도구 나 라이브러리를 사용하기 전에 데이터를 수동으로 또는 텍스트 개체를 XML이 아닌 텍스트가 아닌 * 텍스트 *로 처리해야합니다. 그것. – kjhughes