0

Hi I want to find user information with room number and birthdate . I load xml file with file_get_contents and simplexml_load_string.I get the data successfully from url. Orginal URL XML data:

<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="userinfo.xsd" generated="2013-03-22T11:16:13">
<userinfo>
<BirthDate>1967-12-27</BirthDate>
<RoomNo>111</IDNo>
<ClientName>AAA BBB CCC</ClientName>
</userinfo>
<userinfo>
<BirthDate>1970-01-01</BirthDate>
<RoomNo>121</IDNo>
<ClientName>DDD EEE FFF</ClientName>
</userinfo>
<userinfo>

I tried with this code : $found = $xml->xpath('//userinfo/BirthDate[contains(text(), "1967-12-27")] and RoomNo[contains(text(), "111")]')[0]; But I didnt get anything.

1
  • Can you please ensure error reporting is turned on, your XML is malformed (see RoomNo/IDNo) Commented May 18, 2017 at 12:10

1 Answer 1

3

I've had a go at cleaning up your code and produced a working sample

$string = '<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="userinfo.xsd" generated="2013-03-22T11:16:13">
  <userinfo>
    <BirthDate>1967-12-27</BirthDate>
    <RoomNo>111</RoomNo>
    <ClientName>AAA BBB CCC</ClientName>
  </userinfo>
  <userinfo>
    <BirthDate>1970-01-01</BirthDate>
    <RoomNo>121</RoomNo>
    <ClientName>DDD EEE FFF</ClientName>
  </userinfo>
</dataroot>';

$xml = simplexml_load_string( $string );
if( $user = $xml->xpath( '//userinfo[RoomNo="111" and BirthDate="1967-12-27"]' ) )
{
  var_dump( (string) $user[0]->ClientName );
  // string(11) "AAA BBB CCC"
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.