سؤال

أنا أبحث عن مكتبة JavaScript جيدة لتحليل بيانات XML.ينبغي أن يكون أسهل بكثير في الاستخدام من المدمج موزعي XML DOM المجمعة مع المتصفحات.

لقد أفسدت بعض الشيء في العمل مع JSON وأتطلع إلى شيء مشابه لـ XML.

هل كانت مفيدة؟

المحلول

أنا أستعمل مسج لهذا.هنا هو مثال جيد:

(يحرر:ملاحظة - يبدو أن المدونة التالية قد اختفت.)

http://blog.reindel.com/2007/09/24/jquery-and-xml-revisited/

وهناك أيضًا الكثير والكثير من الأمثلة الجيدة في مسج توثيق:

http://www.webmonkey.com/tutorial/Easy_XML_Consumption_using_jQuery?oldid=20032

يحرر:نظرًا لاختفاء مدونة المثال الأساسي الخاص بي، أردت إضافة مثال آخر يوضح الأساسيات ويساعد في حل مشكلات مساحة الاسم:

http://www.zachleat.com/web/selecting-xml-with-javascript/

نصائح أخرى

تنصل: أنا المؤلف إذا كان مفتوح المصدر جيسونيكس المكتبة التي يمكن تكون مناسبة للمهمة.


منذ عامين كنت أبحث أيضًا عن مكتبة تحليل/تسلسل XML<->JSON جيدة لجافا سكريبت.كنت بحاجة إلى معالجة مستندات XML المطابقة لمخططات XML المعقدة إلى حد ما.في جافا، أستخدمه بشكل روتيني جاكسب للمهمة لذلك كنت أبحث عن شيء مماثل:

هل توجد واجهة برمجة تطبيقات JavaScript لربط XML - تمثيلية لـ JAXB لـ Java؟

لقد فشلت في العثور على مثل هذه الأداة في ذلك الوقت.

لذلك كتبت جيسونيكس والذي أعتبره نظيرًا لـ JAXB لجافا سكريبت.

قد تجد جيسونيكس مناسب، إذا كنت مهتمًا بالميزات التالية:

  • XML<->يعتمد تحويل JSON على أ رسم الخرائط التعريفية بين هياكل XML وJSON
  • هذا رسم الخرائط يمكن ان يكون تم إنشاؤها من مخطط XML أو كتابتها يدوياً
  • ثنائي الاتجاه - يدعم التحليل وكذلك التسلسل (أو إلغاء التنظيم/التنظيم بمصطلحات أخرى).
  • يدعم عناصر, صفات ويعتبر أيضا مساحات الأسماء المحددة في وثيقة XML.
  • مكتوب بدقة.
  • منظم بدقة.
  • دعم جميع تقريبا أنواع مخططات XML المضمنة (بما في ذلك أنواع خاصة مثل QName).
  • يعمل في المتصفحات إلى جانب Node.js, ، متوافق أيضًا مع RequireJS/أيه إم دي (وكذلك ل amdefine في Node.js)
  • لديه وثائق واسعة النطاق.

ومع ذلك، جيسونيكس قد يكون مبالغة, ، إذا كان XML الخاص بك بسيطًا إلى حد ما، أو لا يحتوي على مخطط XML أو إذا لم تكن مهتمًا بالكتابة أو الهياكل الصارمة.تحقق من متطلباتك.

مثال

جربها في JSFiddle.

يمكنك أن تأخذ مخطط أمر الشراء وقم بإنشاء تعيين له باستخدام الأمر التالي:

java -jar node_modules/jsonix/lib/jsonix-schema-compiler-full.jar
  -d mappings -p PO purchaseorder.xsd

سوف تحصل على PO.js الملف الذي يصف التعيينات بين بنيات XML وJavaScript.إليك مقتطف من ملف التعيين هذا لإعطائك انطباعًا:

var PO = {
    name: 'PO',
    typeInfos: [{
        localName: 'PurchaseOrderType',
        propertyInfos: [{
            name: 'shipTo',
            typeInfo: 'PO.USAddress'
        }, {
            name: 'billTo',
            typeInfo: 'PO.USAddress'
        }, {
            name: 'comment'
        }, {
            name: 'orderDate',
            typeInfo: 'Calendar',
            type: 'attribute'
        }, ...]
    }, {
        localName: 'USAddress',
        propertyInfos: [ ... ]
    }, ...],
    elementInfos: [{
        elementName: 'purchaseOrder',
        typeInfo: 'PO.PurchaseOrderType'
    }, ... ]
};

بوجود ملف التعيين هذا، يمكنك تحليل ملف XML:

// First we construct a Jsonix context - a factory for unmarshaller (parser)
// and marshaller (serializer)
var context = new Jsonix.Context([PO]);

// Then we create a unmarshaller
var unmarshaller = context.createUnmarshaller();

// Unmarshal an object from the XML retrieved from the URL
unmarshaller.unmarshalURL('po.xml',
    // This callback function will be provided
    // with the result of the unmarshalling
    function (unmarshalled) {
        // Alice Smith
        console.log(unmarshalled.value.shipTo.name);
        // Baby Monitor
        console.log(unmarshalled.value.items.item[1].productName);
    });

أو قم بإجراء تسلسل لكائن JavaScript كـ XML:

// Create a marshaller
var marshaller = context.createMarshaller();

// Marshal a JavaScript Object as XML (DOM Document)
var doc = marshaller.marshalDocument({
    name: {
        localPart: "purchaseOrder"
    },
    value: {
        orderDate: { year: 1999, month: 10, day: 20 },
        shipTo: {
            country: "US",
            name: "Alice Smith",
            street: "123 Maple Street",
            city: "Mill Valley",
            state: "CA",
            zip: 90952
        },
        billTo: { /* ... */ },
        comment: 'Hurry, my lawn is going wild!',
        items: { /* ... */ }
    }
});

يمكنك تجربتها في JSFiddle لنرى كيف يعمل في الممارسة العملية.


إخلاء المسؤولية الإضافي: تم التصويت على هذه الإجابة بدرجة عالية بسبب بعد المناقشة على ميتا. لذا يرجى الانتباه إلى "التأثير الفوقي". الأصوات العالية هنا لا تعني بالضرورة أن Jsonix جيد أو قابل للتطبيق أو موصى به من قبل المجتمع.لا تنخدع بالأصوات العالية.

إذا كان XML الخاص بك بتنسيق بسيط، فيمكنك الاطلاع عليه مسج و ال XML إلى البرنامج المساعد JSON أو ال xmlObjectifier.

للحصول على محلل مستقيم قد ترغب في إلقاء نظرة عليه XML لـ <SCRIPT>.

هل جربت XML للبرنامج النصي.يجب أن أعترف أنني لم أستخدمه شخصيًا مطلقًا، لكنني سمعت/قرأت بعض الأشياء الجيدة عنه.

جربها وربما شارك تجربتك هنا؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top