簡體   English   中英

在PHP中編寫xml文件時出現字符串解析錯誤

[英]String parsing error while writing an xml file in php

我正在用php代碼編寫一個站點地圖文件。我能夠根據要求正確寫入該文件。但是我想在XML文件的起始節點中添加名稱空間標簽,我嘗試通過代碼進行此操作。但是出現了以下錯誤

Uncaught exception Exception with message 'String could not be parsed as XML'

以下是我的xml結構

<urlset>
    <url>
      <loc>url1</loc>
    </url>
..
..
</urlset>

父節點下有許多url片段作為urlset。我想將站點地圖的名稱空間標簽添加到urlset節點。那是我唯一無法做到的。Xml文件更大,我無法手動完成。 。

以下是我的xml格式代碼

<?php

     //Create Database connection
  $mysqli = new mysqli('localhost', 'user', 'pass', 'dbname');

   if(mysqli_connect_errno()) {
      echo "Connection Failed: " . mysqli_connect_errno();
      }
    /* if (!$mysqli->set_charset("utf8")) {
        printf("Error loading character set utf8: %s\n", $mysqli->error);
    } else {
        printf("Current character set: %s\n", $mysqli->character_set_name());
    }
    */
 $xml = new SimpleXMLElement('<xml/>');
    for ($i = 0; $i < 2; $i++) {
    // used to be: $query='select tablecolname1 from tablename limit 10000';
    $start = $i * 50000;
    $query = "select Siteurl from tablename limit $start, 50000";
$result = mysqli_query($mysqli,$query);  

//Create SimpleXMLElement object
$xml = new SimpleXMLElement('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">');
while($row = mysqli_fetch_array($result)) {
        $mydata = $xml->addChild('url');
$mydata->loc=$row['Siteurl'];
//htmlentities(strip_tags($mydata->loc=$row['Siteurl']), ENT_COMPAT,'utf-8');
    }
    // used to be: $fp = fopen("folder/file2.xml","wb");
    $fp = fopen("site/sitemap$i.xml","wb");
    fwrite($fp,utf8_encode($xml->asXML()));
    fclose($fp);
}


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

    ?>

請指導我如何將名稱空間標簽添加到urlset標簽。

根據文檔, SimpleXMLElement希望將其作為參數“格式良好的XML字符串”。 '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'不是這樣的字符串。

您可以通過(至少)兩種(簡單)方式從PHP構建XML:

  • 要么僅通過在XML文件中回顯您想要的內容(包括標簽):

     header('Content-Type:text/xml'); echo '<?xml version="1.0" encoding="UTF-8"?>'; echo '<urlset xmlns="...">'; ... echo '</urlset>'; 
  • 或通過使用SimpleXML對象並構建DOM樹(請參閱文檔中的示例#10):

     header('Content-Type:text/xml'); $xml=new SImpleXMLElement('<xml/>'); $urlset=$xml->addChild('urlset'); $urlset->addAttribute('xmlns','...'); ... echo $xml->asXML(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM