C++: Как извлечь строку из RapidXml

Вы можете использовать tf.pack ( tf.stack в TensorFlow 1.0.0) для этой цели. Вот как упаковать случайное изображение типа numpy.ndarray в Tensor:

import numpy as np
import tensorflow as tf
random_image = np.random.randint(0,256, (300,400,3))
random_image_tensor = tf.pack(random_image)
tf.InteractiveSession()
evaluated_tensor = random_image_tensor.eval()

UPDATE: чтобы преобразовать объект Python в тензор, вы можете использовать tf.convert_to_tensor .

13
задан Sergey Brunov 9 March 2016 в 20:16
поделиться

5 ответов

Althoug документация плоха по этой теме, мне удалось получить некоторый рабочий код путем рассмотрения источника. Хотя это пропускает xml заголовок, который обычно содержит важную информацию. Вот маленький пример программы, который делает то, что Вы ищете использование rapidxml:

#include <iostream>
#include <sstream>
#include "rapidxml/rapidxml.hpp"
#include "rapidxml/rapidxml_print.hpp"

int main(int argc, char* argv[]) {
    char xml[] = "<?xml version=\"1.0\" encoding=\"latin-1\"?>"
                 "<book>"
                 "</book>";

    //Parse the original document
    rapidxml::xml_document<> doc;
    doc.parse<0>(xml);
    std::cout << "Name of my first node is: " << doc.first_node()->name() << "\n";

    //Insert something
    rapidxml::xml_node<> *node = doc.allocate_node(rapidxml::node_element, "author", "John Doe");
    doc.first_node()->append_node(node);

    std::stringstream ss;
    ss <<*doc.first_node();
    std::string result_xml = ss.str();
    std::cout <<result_xml<<std::endl;
    return 0;
}
9
ответ дан 1 December 2019 в 22:08
поделиться

Использовать print функция (найденный в rapidxml_print.hpp служебный заголовок) для печати содержания узла XML к a stringstream.

6
ответ дан 1 December 2019 в 22:08
поделиться

При создании XML сами не забывайте выходить из специальных символов. Это имеет тенденцию быть пропущенным, но может вызвать некоторые серьезные головные боли, если это не реализовано:

  • <       &lt;
  • >       &gt;
  • И       &amp;
  • "       &quot;
  • '       &apos;
2
ответ дан 1 December 2019 в 22:08
поделиться

Если Вы еще не посвящаете себя Быстрому XML, я могу рекомендовать некоторые дополнительные библиотеки:

  • Xerces - Это - вероятно, defacto реализация C++.

  • XMLite - У меня была некоторая удача с этой минимальной реализацией XML. См. статью по http://www.codeproject.com/KB/recipes/xmlite.aspx

0
ответ дан 1 December 2019 в 22:08
поделиться

Вот как напечатать узел в строку прямо из RapidXML Manual :

xml_document<> doc;    // character type defaults to char
// ... some code to fill the document

// Print to stream using operator <<
std::cout << doc;   

// Print to stream using print function, specifying printing flags
print(std::cout, doc, 0);   // 0 means default printing flags

// Print to string using output iterator
std::string s;
print(std::back_inserter(s), doc, 0);

// Print to memory buffer using output iterator
char buffer[4096];                      // You are responsible for making the buffer large enough!
char *end = print(buffer, doc, 0);      // end contains pointer to character after last printed character
*end = 0;                               // Add string terminator after XML
2
ответ дан 1 December 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: