he encontrado otra manera de hacer esto, aquí está la muestra:
crear db
rizo -X PONER http://localhost:5984/bookstore
crear documento de diseño
rizo -X POSTAL http://localhost:5984/bookstore/_bulk_docs -d @ design.doc
donde el contenido de design.doc es:
{"docs":
[
{
"_id": "_design/app",
"updates": {
"xml2json": "
function (doc, req) {
if(req.query.doc == null) {
return [null, \"doc is null!\\n\"];
}
var xmlDoc = req.query.doc.replace(/^<\?xml\s+version\s*=\s*([\"'])[^\1]+\1[^?]*\?>/, \"\");
var html = new XML(xmlDoc);
if(doc==null) {
doc = {};
[email protected]();
if(doc._id==null||doc._id==\"\") {
[email protected]();
}
}
if (doc._id == null || doc._id == \"\") {
return [null, \"doc id is null!\\n\"];;
}
doc.title = html.BookList.BookData.Title.text();
doc.longtitle = html.BookList.BookData.TitleLong.text();
doc.authors = html.BookList.BookData.AuthorsText.text();
doc.publisher = html.BookList.BookData.PublisherText.text();
return [doc, \"ok!\\n\"];
}"
}
}
]
}
_update prueba
doc=$(cat isbndb.sample); doc="$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$doc")"; curl -X PUT http://localhost:5984/bookstore/_design/app/_update/xml2json/9781935182320?doc="$doc"
donde el contenido de isbndb.sample es:
<?xml version="1.0" encoding="UTF-8"?>
<ISBNdb server_time="2010-08-11T04:13:08Z">
<BookList total_results="1" page_size="10" page_number="1" shown_results="1">
<BookData book_id="mastering_perl" isbn="0596527241" isbn13="9780596527242">
<Title>Mastering Perl</Title>
<TitleLong></TitleLong>
<AuthorsText>brian d foylt;/AuthorsText>
<PublisherText publisher_id="oreilly_media">Sebastopol, CA : O'Reilly Media, c2007.</PublisherText>
</BookData>
</BookList>
</ISBNdb>
quiero obtener el json. entonces el archivo adjunto no es adecuado, tal vez la mejor manera es usar un campo de json para transferir xml al servidor, pero es inconveniente cuando mi xml incluye tantos caracteres '' '. Se deben escapar manualmente. – turtledove
No debería necesitar escapar de forma manual. Simplemente convierta su XML en una cadena, que ya se ve como es, y luego ejecute json_encode(). Se encargará de todo el escapado y el formato para usted. Además, siempre puede traducir el XML en PHP objetos (operación bastante simple), y luego ejecutarlo a través de json_encode() y almacenar eso en su documento. –