Ошибка синтаксического анализа XML ... Элемент не найден - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть скрипт, генерирующий документ XML, который внезапно перестал работать. Когда я запускаю его, я получаю эту ошибку:

Ошибка синтаксического анализа XML: элемент не найден Расположение: http://www.mydomain.com/indeed-general-xml/ Строка № 1, столбец 1:

Вот код и цикл, которые генерируют структуру узла:

    header('Content-Type: text/xml');
    //create DOMDocument object and set char encoding
    $doc = new DOMDocument('1.0','utf-8');
    $doc->formatOutput = true;

    //root element
    $r = $doc->createElement( "source" );
    //append root element to our document
    $doc->appendChild( $r ); 

    $publisher = $doc->createElement("publisher");
    $publisher->appendChild($doc->createTextNode("mydomain.com"));
    $r->appendChild($publisher);

    $publisherurl = $doc->createElement("publisherurl");
    $publisherurl->appendChild($doc->createTextNode("http://mydomain.com"));
    $r->appendChild($publisherurl);

    $job = array();
    //set args for query
    $args = array(
        'post_author' => -1,
        'post_type' => 'job_listing',
        'posts_per_page' => -1,
        'post_status' => 'publish',
        'orderby' => 'date',
        'order' => 'DESC'
        );
    //run query
    $feed_jobs = new WP_Query($args);while($feed_jobs->have_posts()) : $feed_jobs->the_post(); 
    $b = $doc->createElement( "job" );

    //begin loop
    (while $feed_jobs->have_posts()) : $feed_jobs->the_post();

    $title = $doc->createElement("title");    
    $title->appendChild($doc->createCDATASection( $post->post_title));
    $b->appendChild( $title );

    $company_name = "Sample Company Name";
    $company = $doc->createElement("company");
    $company->appendChild($doc->createCDATASection($company_name));
    $b->appendChild($company); 

    $date = $doc->createElement("date");
    $date->appendChild($doc->createCDATASection($post->post_date));
    $b->appendChild($date);

    $referencenumber = $doc->createElement("referencenumber");
    $referencenumber->appendChild($doc->createCDATASection($post->ID));
    $b->appendChild($referencenumber);

    $url = $doc->createElement("url");
    $url->appendChild($doc->createCDATASection($post->guid));
    $b->appendChild($url);

    $description = $doc->createElement("description");
    $description = createCDATASection($post->post_content);
    $description->appendChild($description);
    $b->appendChild($description);

    //query postmeta table for city and state// then parse it into an array 
    $location = get_post_meta($post->ID,'geo_address',true);
    $location = explode(',',$location);

    $city = $doc->createElement("city");
    $city->appendChild($doc->createCDATASection($location[0]));
    $b->appendChild($city);

    $state = $doc->createElement("state");
    $state->appendChild($doc->createCDATASection($location[1]));
    $b->appendChild($state);

    $r->appendChild( $b );     

endwhile;  

Я не думаю, что это проблема с пустыми строками в моих заголовках, потому что у меня есть идентичный скрипт, который отлично работает, единственное отличие - это данные пользователя, извлеченные из базы данных. И когда я обмениваю запросы, сломанный скрипт не запускается.

Эта ошибка сводит меня с ума. Большое спасибо за любую помощь.

РЕДАКТИРОВАТЬ: Вот пример предполагаемого вывода, который я попросил

<source>
  <publisher>mydomain.com</publisher>
  <publisherurl>http://mydomain.com</publisherurl>
    <job>
        <company_name>ABC Company</company_name>
        <date>3-4-2011 10:54</date>
        <referencenumber>1234</referencenumber> 
        <url>http://www.mydomain.com/extension</url>
        <description>Block of of content, likely ranging several thousand characters. HTML tags included, but should be sanitized by use of createCDATASection() method</description>
        <city>Oakland</city>
        <state>California</state>
  </job>
</source>

1 Ответ

0 голосов
/ 11 февраля 2012
$description = $doc->createElement("description");
$description = createCDATASection($post->post_content);
$description->appendChild($description);

???

Вы хотели добавить что-то к себе?

...