मैं एक और तरीका यह करने के लिए मिल गया है, यहाँ नमूना है:
बनाने db
कर्ल -X डाल http://localhost:5984/bookstore
बनाने डिजाइन दस्तावेज़
कर्ल -X पोस्ट http://localhost:5984/bookstore/_bulk_docs -d @ design.doc
जहां design.doc की सामग्री है:
{"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
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"
जहां isbndb.sample की सामग्री है:
<?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>
मैं जेसन प्राप्त करना चाहता हूं। इसलिए लगाव उपयुक्त नहीं है, शायद सबसे अच्छा तरीका जेसन के एक सर्वर का उपयोग सर्वर पर एक्सएमएल स्थानांतरित करने के लिए किया जाता है, लेकिन यह असुविधाजनक है जब मेरे एक्सएमएल में इतने सारे '' चरित्र शामिल हैं। उन्हें मैन्युअल रूप से बच जाना चाहिए। – turtledove
आपको भागने की आवश्यकता नहीं है उन्हें मैन्युअल रूप से बदलें। बस अपने एक्सएमएल को एक स्ट्रिंग में बदलें, जो पहले से ही ऐसा लगता है, और फिर json_encode() चलाएं। यह आपके लिए सभी भागने और स्वरूपण का ख्याल रखेगा। साथ ही, आप हमेशा एक्सएमएल को PHP में अनुवाद कर सकते हैं ऑब्जेक्ट्स (काफी सरल ऑपरेशन), और फिर इसे json_encode() के माध्यम से चलाएं और अपने दस्तावेज़ में स्टोर करें। –