1. منتجات
  2.   HTML
  3.   Swift
  4.   Kanna
 
  

مكتبة سويفت مجانية لتحليل وتعديل بيانات HTML

مكتبة سويفت مفتوحة المصدر لتحليل HTML/XML توفر واجهة برمجة تطبيقات سويفت نظيفة لتحليل وتصفح مستندات HTML و XML بسهولة.

ما هو كانا؟

إذا قمت يومًا بإنشاء تطبيق Swift يحتاج إلى استخراج البيانات من صفحات الويب، أو تحليل استجابات API بصيغة XML، أو جمع محتوى منظم، فمن المحتمل أنك واجهت تحدي التعامل مع سلاسل HTML وXML الخام. لا تتضمن مكتبة Swift القياسية محللًا أصليًا وسهل الاستخدام لهذه الصيغ، وهذا هو المكان الذي يتدخل فيه Kanna لإنقاذ الموقف. في جوهره، يوفر Kanna واجهة برمجة تطبيقات Swift نظيفة لتحليل وتصفح مستندات HTML وXML. تحت الغطاء، يقوم بتفويض العمل الشاق إلى libxml2، مما يعني أنك تحصل على أداء تحليل ثابت دون الحاجة إلى إعادة تنفيذ قواعد النحو المعقدة بنفسك.

Kanna تبرز في نظام Swift البيئي بفضل بساطتها وقوتها. من خلال واجهة برمجة التطبيقات البديهية، يمكنك التنقل ومعالجة مستندات HTML/XML باستخدام طرق الاستعلام المألوفة مثل XPath 1.0 ومحددات CSS3. سواء كنت تبني أداة استخراج ويب، أو تستخرج بيانات من خلاطات RSS، أو تعالج ملفات تكوين XML، فإن Kanna توفر الأدوات التي تحتاجها. الدعم عبر الأنظمة هو أحد أكثر ميزات Kanna جاذبية. فهي تعمل على macOS و iOS و tvOS و watchOS وحتى Linux. توفر XPath 1.0 ومحددات CSS3 طريقتين قويّتين ومعتمدتين في الصناعة لاستعلام المستندات. دعمها المزدوج لكل من محددات CSS3 و XPath 1.0 يجعلها مرنة بما يكفي للتعامل مع كل شيء من استخراج HTML بسيط إلى معالجة XML معقدة ذات مساحات أسماء. سواء كنت تبني تطبيق iOS يستهلك خلاط RSS، أو خادم Vapor يجمع أسعار المنافسين، أو أداة سطر أوامر تحول بيانات XML، فإن Kanna تمنحك الأدوات لإنجاز المهمة بشكل موثوق وأنيق.

Previous Next

البدء مع كانا

الطريقة الموصى بها والأسهل لتثبيت Kanna هي باستخدام CocoaPods. يرجى استخدام الأمر التالي لتثبيت سلس.

تثبيت Kanna عبر Carthage

// add the following line to your Podfile:
use_frameworks! 
pod 'Kanna', '~> 5.2.2'

// Then run:
$ pod install

تثبيت Kanna عبر CocoaPods


// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2

يمكنك أيضًا تثبيتها يدويًا؛ قم بتنزيل أحدث ملفات الإصدار مباشرةً من مستودع GitHub.

تحليل مستندات HTML عبر سويفت

تتضمن مكتبة Kanna المفتوحة المصدر دعمًا لتحميل وتحليل مستندات HTML داخل تطبيقات Swift. أكثر حالات الاستخدام شيوعًا لهذا التحليل هو HTML، سواء تم تنزيله من الويب أو تم إنشاؤه برمجيًا. إليك مثالًا بسيطًا يوضح كيف يمكن لمطوري البرمجيات استخدام دالة HTML التي تقبل سلسلة HTML خام، تقوم بترميزها وتعيد كائن مستند يحتوي على خصائص مثل .title و .body تمنحهم وصولًا سريعًا إلى العناصر الشائعة دون الحاجة إلى محدد.

كيف تقوم بتحليل HTML باستخدام ترميز UTF-8 عبر مكتبة Swift؟

 import Kanna

// A sample HTML string representing a webpage
let htmlString = """

  
    My Tech Blog
  
  
    

مرحبًا بكم في تحليل سويفت

تجعل Kanna تحليل HTML سهلًا وأنيقًا.

View on GitHub """ // Parse the HTML string using UTF-8 encoding if let doc = try? HTML(html: htmlString, encoding: .utf8) { // Access the document title directly via a convenience property print(doc.title ?? "No title found") // Output: My Tech Blog // Access the full body text print(doc.body?.text ?? "No body") }

دعم استعلام محددات CSS3

تتضمن مكتبة Kanna دعمًا كاملاً لمحددات CSS3 مما يتيح للمطورين استخدام ص syntax CSS المألوفة للعثور على العناصر. يتيح لك دعم محددات CSS في Kanna استخدام نفس بنية المحدد التي قد تكتبها في ورقة الأنماط أو في querySelectorAll في JavaScript. هذا يجعلها بديهية جدًا لأي شخص يأتي من خلفية تطوير الويب. يوضح المثال التالي كيف يمكن للمستخدمين اختيار عناصر HTML وتكرار عدة عناصر داخل تطبيقات Swift.

كيف تختار عناصر HTML متعددة وتستخرج النص منها عبر مكتبة Swift؟

import Kanna

let htmlString = """


  
  • كتاب سويفت $39.99
  • دليل Xcode $24.99
  • أساسيات iOS $49.99
""" if let doc = try? HTML(html: htmlString, encoding: .utf8) { // Select all elements with class "product" inside a "ul" for product in doc.css("ul.product-list li.product") { // Extract text from nested span elements using child selectors let name = product.css("span.name").first?.text ?? "Unknown" let price = product.css("span.price").first?.text ?? "N/A" // Access HTML attributes using subscript notation let productId = product["data-id"] ?? "No ID" print("[\(productId)] \(name) — \(price)") } }

دعم استعلام XPath 1.0

تتضمن مكتبة Kanna دعمًا لاستعلام XPath 1.0 داخل تطبيقات Swift. يوفر XPath طريقة أكثر قوة ومرونة للتنقل عبر العناصر والسمات في مستند XML/HTML. وهو مفيد بشكل خاص للهياكل المستندية المعقدة. يمكن لتعبيرات XPath استعراض المستندات بطرق لا يستطيع محددات CSS القيام بها، مثل العثور على العناصر بناءً على موقعها، أو علاقات الأب-ابن، أو مطابقة نصية معقدة. إنه لا غنى عنه لتحليل XML واستخلاص HTML المعقد.

تحليل XML والتحقق من صحته عبر سويفت

بعيدًا عن تحليل HTML الأساسي، توفر مكتبة Kanna المفتوحة المصدر قدرات قوية لمعالجة XML. يشمل ذلك التحقق من صحة بنية XML وإدارة السمات. عند العمل مع البيانات المهيكلة، تحتاج إلى أكثر من مجرد استخراج العناصر. توفر Kanna وصولًا كاملاً إلى مستند XML، بما في ذلك التعليقات وتعليمات المعالجة وبيانات التعريف الخاصة بالمستند.

كيف تقوم بتحليل XML داخل تطبيقات Swift؟

import Kanna

let xmlString = """


  
    Swift Developer News
    
      Kanna 6.0 Released with Swift 6 Support
      Alex Johnson
      Mon, 26 Jun 2024 00:00:00 GMT
    
    
      New Features in Swift 5.10
      Maria Garcia
      Tue, 15 Apr 2024 00:00:00 GMT
    
  

"""

if let doc = try? Kanna.XML(xml: xmlString, encoding: .utf8) {
    
    // Define a namespace mapping: prefix -> URI
    // The prefix you use here ("dc") can be anything; it maps to the namespace URI
    let namespaces = [
        "dc": "http://purl.org/dc/elements/1.1/"
    ]
    
    // Query elements in the "dc" namespace using the prefix
    for item in doc.xpath("//item", namespaces: namespaces) {
        let title = item.at_xpath("title")?.text ?? "No title"
        let creator = item.at_xpath("dc:creator", namespaces: namespaces)?.text ?? "Unknown"
        let pubDate = item.at_xpath("pubDate")?.text ?? "No date"
        
        print("Title: \(title)")
        print("Author: \(creator)")
        print("Published: \(pubDate)\n")
    }
}


 عربي