تطبيق تحليل خفيف الوزن. لن يقوم هذا الرمز بتنزيل أي معلومات من الإنترنت ، ولن يقوم بتنفيذ أي نصوص ، فهو محلل.
يتم تنفيذ التحليل من خلال خرف MSHTML. لاستخدام هذا الرمز بشكل صحيح ، تحتاج إلى إضافة مرجع MSHTML.
نظرًا لأن واجهة epersistreamint غير محددة في .NET ، يجب تنفيذها بنفسها ، وتعريف الواجهة هو:
المحتوى التالي هو رمز البرنامج:
[comvisible (true) ، comimport () ، guid ("7FD52380-4E07-101B-AE2D-08002B2EC713") ، interfaceTypeAttribute (cominterfaceType.InterfaceIunnown)]]]]
PublicInterfaceipersististreaminit
{
voidgetClassid ([in ، out] refguidpclassid) ؛
[عودة: مارشالاس (unmanagedtype.i4)] [proservesig]
intisdirty () ؛
voidload ([في ، marshalas (unmanagedType.Interface)] uComistreampStm) ؛
voidsave ([في ، marshalas (unmanagedType.Interface)] ucomistreampstm ،
[في ، Marshalas (unmanagedtype.i4)] intfcleardirty) ؛
voidgetsizemax ([out ، marshalas (unmanagedType.lparray)] longpcbsize) ؛
voidinitnew () ؛
}
المحتوى التالي هو رمز البرنامج:
UnsafeiHtmldocument2Parse (سلاسل)
{
ihtmldocument2pdocument = newhtmldocumentClass () ؛
إذا (pdocument! = خالية)
{
ipersistreaminitppersist = pDocumentAsipersististreaminit ؛
ppsist.initnew () ؛
ppsist = فارغة ؛
imakupservicesms = pdocumentAsimarkupServices ؛
إذا (MS! = فارغ)
{
memarkupContainerPMC = null ؛
imarkuppointerpstart ، Pend ؛
Ms.CreateMarkuppointer (OutPstart) ؛
Ms.Createmarkuppointer (Outpend) ؛
StringBuildersB = newstringBuilder (s) ؛
intptrpsource = Marshal.StringToHglobaluni ؛
Ms.Parsestring (Ref*(Ushort*) psource.topointer () ، 0 ، outpmc ، pstart ، pend) ؛
إذا (PMC! = فارغة)
{
Marshal.Release (Psource) ؛
returnpmcasihtmldocument2 ؛
}
Marshal.Release (Psource) ؛
}
}
العودة
}
حدث خطأ ما عند كتابة الرمز. المعلمة الأولى من markupservice :: parsestring هي استرداد. من الواضح ، لتمرير رمز HTML ، يجب أن يكون هذا العرض الأول من widechar ، لذلك هنا نتجاوز تحذير المترجم باستخدام رمز غير آمن.