سؤال

أحاول استخدام XPath لتحليل مستند XML.يبدو أحد أشكال NSXMLElement الخاصة بي كما يلي، من الناحية النظرية:

<foo bar="yummy">

أحاول الحصول على قيمة شريط السمات، ولكن أي تفسير للكود الذي أستخدمه، يعيدني إلى شريط = "woo"، مما يعني أنني بحاجة إلى إجراء المزيد من معالجة السلسلة من أجل الوصول إلى woo و woo وحدهما.

في الأساس أنا أفعل شيئًا مثل

NSArray *nodes = [xmlDoc nodesForXPath:@"foo/@bar" error:&error];
xmlElement = [nodes objectAtIndex:0];

هل هناك طريقة لكتابة الكود أعلاه ليعطيني لذيذًا فقط، مقابل شريط = "لذيذ" حتى أتمكن من إعفاء نفسي من تحليل السلسلة؟

شكرًا.


بافتراض أنه يتم استخدام TouchXML، هل لا يزال هناك أي طريقة للحصول على نتائج مماثلة؟كما هو الحال في الحصول على قيمة السمة فقط، بدون السمة = "القيمة"؟وينتج عن ذلك الاضطرار إلى تحليل السلسلة للحصول على القيمة.

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

المحلول

من المفترض أن تكون TouchXML API نسخة طبق الأصل من تطبيق NSXML من Apple، لذلك يجب أن تكون هي نفسها باستثناء أنك ستستبدل جميع أساليب NS بأساليب C.

يتم تعيين فئات TouxhXML مباشرةً إلى فئات NSXML. NSXMLNode -> CXMLNode, NSXMLDocument -> CXMLDocument, NSXMLElement -> CXMLElement.لأسباب واضحة، لا يمكنك المزج والمطابقة بين فئات NSXML وTouchXML.

يتم تعيين أساليب TouxhXML مباشرة إلى أساليب NSXML أيضًا، ولكن يتم دعم مجموعة فرعية صغيرة فقط من الأساليب.الأسماء الثابتة والتعدادية متكافئة تقريبًا (CXML...vs NSXML...) لكن القيم الثابتة لن تكون متساوية

مرجع

باستخدام فئات Apple العادية أو إطار عمل TouchXML، سيمنحك الكود التالي السلسلة "yummy" فقط لمثالك.

 NSArray *nodes = [xmlDoc nodesForXPath:@"./foo/@bar" error:&err];
 NSString *value = [[nodes objectAtIndex:0] stringValue];

حظ سعيد،

بريان ج

نصائح أخرى

إذا كنت تحاول استخدام فئة NSXMLDocument على اي فون، وأنت تسير لتكون خيبة أمل ماسة، لأن هذه الفئة (وما يتصل بها من NSXMLNode، NSXMLElement، الخ الطبقات) لا تتوفر على الهاتف (فهي متوفرة في المحاكية، والتي يمكن أن يكون مربكا).

ونلقي نظرة على libxml2 للقيام إعراب XML على الهاتف. هناك العديد من الأطر مجانية (أعتقد TouchXML هو فكرة جيدة) للقيام بذلك.

وأن يقال، إذا كنت ترغب في تشغيل هذا الرمز على ماك، يمكنك استخدام -attributeForName: طريقة NSXMLElement لسحب فقط السمة التي تريد.

والحق بن ل- في حين كود فون SDK ستبني مع NSXMLDocument وتشغيل في جهاز محاكاة، فهو لن يعمل على الإطلاق على الجهاز. ربما يذكر مستندات في مكان ما، لكنه غامض إلى حد ما. TouchXML هو جزء من TouchCode. يمكنك العثور على مزيد من المعلومات حول هذا الموضوع هنا .

واي فون لا يستطيعون الوصول إلى NSXMLParser وهي صغيرة لطيفة محلل ساكس. آرون هيليغاس لديه مادة جيدة على استخدام NSXMLParser. أنه لا يدعم كسباث، ولكن مفيد جدا في تمزيق أكس إلى كائنات البيانات الخاصة بك.

تحليل XML في الكاكاو

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