2017-03-24 6 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 xmlns:Customer="https://www.aaiscloud.com/"> 

変更

<Items> 

また、XMLで使用される他の名前空間接頭辞のためのすべての同様の宣言を追加します。ところで、必須ではありませんが、名前空間接頭辞に短い小文字の略語を使用することが慣例です。Customerからccust、またはcustomerに切り替えることをお勧めします。

+0

$ results(xmlファイル)は、社外から取得したものです。これは 'simplexml_load_string'の前に文字列を操作しなければならないということですか? – blu

+1

宣言されていない名前空間接頭辞を使用する "XML"が提供されている場合、XMLはまったく提供されていません。プロバイダにデータの修正を依頼します。それが不可能な場合は、上記のXMLのツールやライブラリを使用する前に、手動で、またはテキストオブジェクトをXMLでなく、テキストではなくテキスト*として扱い、データを修復する必要がありますそれ。 – kjhughes

関連する問題