c语言编程笔录

首页 >   > 笔记大全

笔记大全

从xml中获取城市 省份名称

更新时间:2024-01-04
段落一: 获取城市和省份名称这个需求,一般可以采用XPath语法来实现。对于XML文档,我们可以使用PHP内置的SimpleXMLElement类来进行解析。下面是一个示例XML文档:
<?xml version="1.0" encoding="UTF-8"?>

    
        广州
        深圳
        珠海
    
    
        北京市
    

要从这样的XML文档中获取城市和省份名称,我们可以使用以下代码:

PHP代码:

$xml = simplexml_load_file('xml_demo.xml');
$provinces = $xml->xpath('/root/province');
foreach ($provinces as $province) {
    $province_name = (string) $province['name'];
    $cities = $province->city;
    foreach ($cities as $city) {
        $city_name = (string) $city;
        echo "省份:{$province_name},城市:{$city_name}\n";
    }
}
解析XML文档的过程很简单,首先使用simplexml_load_file函数将XML文档加载为SimpleXMLElement对象,然后使用xpath方法查询所有的province节点。接下来,使用foreach遍历所有的province节点,获取省份名称和其下属的城市节点。使用foreach遍历城市节点,获取城市名称。 段落二: 如果使用DOMDocument类来解析XML文档,则可以使用getElementsByTagName方法来获取相应的节点,并使用getAttribute和nodeValue方法来获取节点的属性和文本值。同样以上面的XML文档为例,以下是一个基于DOMDocument的示例代码:

PHP代码:

$doc = new DOMDocument();
$doc->load('xml_demo.xml');
$provinces = $doc->getElementsByTagName('province');
foreach ($provinces as $province) {
    $province_name = $province->getAttribute('name');
    $cities = $province->getElementsByTagName('city');
    foreach ($cities as $city) {
        $city_name = $city->nodeValue;
        echo "省份:{$province_name},城市:{$city_name}\n";
    }
}
这段代码与上面的代码类似,只是使用了不同的解析方式。使用DOMDocument类首先需要创建一个DOMDocument对象,然后使用load方法加载XML文档。接下来,使用getElementsByTagName方法获取所有的province节点,使用getAttribute方法获取name属性,使用getElementsByTagName方法获取所有的city节点,使用nodeValue方法获取文本值。 段落三: 除了使用PHP内置的类来解析XML文档,我们还可以使用第三方类库,例如SimpleXMLIterator、XmlReader、XMLWriter等。下面是一个使用SimpleXMLIterator类的示例代码:

PHP代码:

$xml = new SimpleXMLIterator('xml_demo.xml', 0, true);
foreach ($xml as $province) {
    $province_name = (string) $province['name'];
    foreach ($province as $city) {
        $city_name = (string) $city;
        echo "省份:{$province_name},城市:{$city_name}\n";
    }
}
SimpleXMLIterator类继承自SimpleXMLElement类,可以像遍历数组一样遍历XML文档。在这个例子中,我们使用SimpleXMLIterator类读取XML文档,并直接使用foreach遍历所有的province节点和city节点。使用(string)强制转换为字符串类型,以便输出。 段落四: 在实际开发中,我们可能需要从数据库中获取数据,然后生成XML文档返回给客户端。为了实现这个需求,我们可以使用PHP内置的XMLWriter类。以下是一个简单的示例代码:

PHP代码:

$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
$stmt = $pdo->query('SELECT * FROM cities');
$xml = new XMLWriter();
$xml->openMemory();
$xml->startDocument('1.0', 'UTF-8');
$xml->startElement('root');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $xml->startElement('city');
    $xml->writeAttribute('id', $row['id']);
    $xml->writeElement('name', $row['name']);
    $xml->endElement();
}
$xml->endElement();
header('Content-Type: application/xml');
echo $xml->outputMemory(true);
在这个例子中,我们使用PDO类从数据库中获取数据,然后使用XMLWriter类生成XML文档。使用openMemory方法创建一个XMLWriter对象,并使用startDocument方法开始文档。接下来,使用startElement方法开始一个city节点,并使用writeAttribute方法设置id属性,使用writeElement方法设置name子元素。使用endElement方法结束city节点和root节点。最后,设置响应头为application/xml,输出XML文档字符串。