使用字符串输出XML的Foreach循环

摩西终于

在php脚本上,如何使用字符串输出从msql数据库获取值的XML数据来进行foreach循环?我从simpleXmlElement内部的while循环中获取了一些代码,希望它可以输出xml,但无法正常工作。我正在使用的服务器不允许使用类SimpleXMLElement,因此我需要使用该字符串进行foreach循环并根据需要输出xml。

我到目前为止所拥有的:编辑:

<?php
#Programmer: Moses

require('./.env');

// Opens a connection to a mySQL server
try {
    $db = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME. ';charset=utf8',  DB_USERNAME, DB_PASSWORD);
} catch (PDOException $e) {
    echo "An Error occured, could not connect!";
}

$statement = $db->query('SELECT * FROM markers');
//$result = $statement->fetchAll(PDO::FETCH_ASSOC);

$xmlWriter = new XMLWriter();
$xmlWriter->openUri('php://stdout');

$xmlWriter->startDocument();
$xmlWriter->setIndent(2);
$xmlWriter->startElement('markers');
foreach ($statement as $row) {
  $xmlWriter->startElement('marker');
  $xmlWriter->writeAttribute('name', $row['name']);
  $xmlWriter->writeAttribute('address', $row['address']);
  $xmlWriter->writeAttribute('lat', $row['lat']);
  $xmlWriter->writeAttribute('lng', $row['lng']);
  $xmlWriter->writeAttribute('type', $row['type']);
  $xmlWriter->endElement();
}
$xmlWriter->endElement();
$xmlWriter->endDocument();


/**
$str = <<<XML
<xml>
       <marker name="Walvis Bay Live"   lat="-22.956112" lng="14.508056" address="Walvis bay namibia Africa" type="Weather Station"></marker>
       <marker name="Centro Surf Bracciano" lat="11.588599" lng="43.145851" address="djibouti djibouti" type="Weather Station"></marker>
       <marker name="Bashewa Weather" lat="-25.825212" lng="28.312128" address="Garstfontein Rd Pretoria" type="Weather Station"></marker>
       <marker name="Nelspruit Live" lat="-25.475298" lng="30.969416" address="nelspruit south africa" type="Weather Station"></marker>
       <marker name="Richards Bay Live" lat="-28.780727" lng="32.038284" address="richards bay south africa" type="Weather Station"></marker>
       <marker name="Cape Town Live" lat="-33.923775" lng="18.423346" address="cape town south africa" type="Weather Station"></marker>
</xml>
XML;

header("Content-type: text/xml");
echo $str;
exit;
*/


/**
$xml = new SimpleXMLElement('<xml/>');

while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
    $node = $xml->addChild('marker');
    $node->addAttribute('name', $row['name']);
    $node->addAttribute('address', $row['address']);
    $node->addAttribute('lat', $row['lat']);
    $node->addAttribute('lng', $row['lng']);
    $node->addAttribute('type', $row['type']);
}

header('Content-type: text/xml');
print($xml->asXML());
exit;
*/
W

foreach可以迭代实现可遍历的任何数组或对象。的结果PDOStatement::fetch()是记录/行。只需将语句提供给foreach。

foreach($statement as $row) { ...   

像这样的转储的更好的API是XMLWriter它将结果直接写入流,而无需先将整个文档存储在内存中。使用XML API也会根据需要进行转义。这是一个小例子:

$statement = [
  [ 'name' => 'one', 'location' => '...', /* ... */],
  [ 'name' => 'two', 'location' => '...', /* ... */]
];

$xmlWriter = new XMLWriter();
$xmlWriter->openUri('php://stdout');

$xmlWriter->startDocument();
$xmlWriter->setIndent(2);
$xmlWriter->startElement('markers');
foreach ($statement as $row) {
  $xmlWriter->startElement('marker');
  $xmlWriter->writeAttribute('name', $row['name']);
  /* other attributes ... */
  $xmlWriter->endElement();
}
$xmlWriter->endElement();
$xmlWriter->endDocument();

输出:

<?xml version="1.0"?>
<markers>
 <marker name="one"/>
 <marker name="two"/>
</markers>

在DOM中,您可以创建,附加和配置节点。这是一个小示例:https : //stackoverflow.com/a/21760903/2265374

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用字符串输出XML的Foreach循环

来自分类Dev

在forEach()循环中使用字符串变量来按角度获取数据

来自分类Dev

在PostgreSQL中使用字符串进行循环

来自分类Dev

使用字符串循环遍历Properties.Settings

来自分类Dev

While循环使用字符串而不是整数

来自分类Dev

如何使用字符串循环处理空格?

来自分类Dev

使用字符串循环遍历Properties.Settings

来自分类Dev

字符串未在foreach循环中输出

来自分类Dev

使用字符串更新XML文件(SimpleXmlElement对象)

来自分类Dev

用字符串数组循环对象

来自分类Dev

如何使用 foreach 循环替换字符串中的字符?

来自分类Dev

在解析XML字符串时从字符串中的foreach循环返回值

来自分类Dev

PHP在字符串中使用字符串

来自分类Dev

打字稿使用字符串或字符串[]

来自分类Dev

使用字符串方法解析字符串

来自分类Dev

输入所有字符串后使用循环打印输出字符串

来自分类Dev

R中的重复任务,使用sapply或for循环使用字符串

来自分类Dev

何时使用字符串concat

来自分类Dev

使用字符串查询仓库

来自分类Dev

使用字符串访问IDbSet

来自分类Dev

VBA Excel使用字符串

来自分类Dev

使用字符串创建变量

来自分类Dev

使用字符串作为HTML

来自分类Dev

在AppResources中使用字符串

来自分类Dev

使用{fmt}引用字符串

来自分类Dev

使用字符串获取模型

来自分类Dev

bash,使用字符串的脚本

来自分类Dev

使用字符串获取资源

来自分类Dev

Python,使用字符串