【问题标题】:retrieving xml data检索 xml 数据
【发布时间】:2011-05-11 01:57:11
【问题描述】:

在stores.htm 中,我必须输入两个值:一个用于街道地址(街道编号和街道名称),另一个用于郊区。在提供输入的基础上,它从stores.xml 文件中检索数据。

问题在于街道地址和郊区都存储在stores.xml 文件的<address> 元素中,而不是分开存储。我尝试了很多,但我没有找到如何将输入与 xml 文件数据匹配的解决方案。

我被困在 php 文件中的if (condition)

stores.xml

<?xml version="1.0" ?>
<stores>
<store>
<name>galaxy</name>
<address>50 Callander Road,Noble park</address>
</store>
<store>
<name>Remica</name>
<address>10 Challander Road,Noble park</address>
</store>
<store>
<name>Home</name>
<address>10/10 Callan Road,Richmond</address>
</store>
</stores>

stores.htm

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
<title>Search</title> 
<script type="text/javascript" src="search.js"></script> 
</head>
<body>
<form> 
Enter Street Address: <input type="text" name="street" /> 
Enter Suburb        : <input type="text" name="suburb" />
<input name="submit" type = "button" onClick = "getData('search.php','info', street.value, suburb.value)" value = "Search"  /> 
</form>

<div id="info" /> 

</body> 
</html> 

search.php

         $street= $_POST["str"];
         $suburb= $_POST["sub"];

         $xmlFile = "stores.xml";
         $doc= DOMDocument::load($xmlFile);
         $store = $doc->getElementsByTagName("store"); 
         echo "<table border=1><tr><th>Name</th></tr>";   
          foreach($store as $node) 
         {   
        $name = $node->getElementsByTagName("name");
        $name = $name->item(0)->nodeValue;
        $address = $node->getElementsByTagName("address");
        $address = $address->item(0)->nodeValue;     

        if( /* what goes here? */ )  {
            echo"<tr><td>name</td></tr>";   
        }

      echo "</table>";

【问题讨论】:

  • 你到底想用这个地址做什么?用逗号分割?

标签: php html xml


【解决方案1】:

您可以使用 PHP 的 explode function 将街道地址与郊区分开。

// split the address into two parts, street and suburb, using delimiter ','
$address_split = explode(',', $address);
$address_street = $address_split[0];
$address_suburb = $address_split[1];

if ($address_street == $street && $address_suburb == $suburb) {
    // code here
}

【讨论】:

  • ...或 strtok 与 ','。您可能还想使用 strtolower 将查询和数据都放在小写中,以简化模式匹配和修剪以删除这些字符串末尾的任何空白。
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多