fand ich eine andere Art und Weise, dies zu tun, hier Probe:
create db
curl -X PUT http://localhost:5984/bookstore
erstellen Dokument Design
curl -X POST http://localhost:5984/bookstore/_bulk_docs -d @ design.doc
wo design.doc Inhalt ist:
{"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\"];
}"
}
}
]
}
Test _update
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"
wo isbndb.sample Inhalt ist:
<?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>
Ich möchte den JSON bekommen. also Anhang ist nicht geeignet, vielleicht ist der beste Weg, ein Feld von JSON zu Xml auf den Server zu übertragen, aber es ist unbequem, wenn meine Xml enthalten so viele '"' Zeichen. Sie müssen manuell Escaped sein. – turtledove
Sie sollten nicht entkommen müssen Sie können Ihren XML-Code in einen String umwandeln, der bereits so aussieht, wie er ist, und dann json_encode() ausführen. Er kümmert sich um das gesamte Entweichen und Formatieren für Sie. Außerdem könnten Sie das XML immer in PHP übersetzen Objekte (ziemlich einfache Operation), und führen Sie es dann durch json_encode() und speichern Sie das in Ihrem Dokument. –