سؤال

أواجه مشكلة في استخدام حرفي XML مع StringBuilder في VB 2008. إذا استخدمت هذا الرمز كل شيء على ما يرام.

Dim html As New System.Text.StringBuilder

html.Append(<html><body></body></html>)

MsgBox("hello")

الآن المشكلة هي أنني أريد أن ألتف HTML حول شيء يتم إنشاؤه في التعليمات البرمجية.

html.Append(<html><body>)

msgbox("nothing happens")

عندما لا يكون لدى HTML علامة النهاية المقابلة، فإنه يتصرف كما يتجاوز) ويستمر في البحث عنها.

هل هناك شيء أفعله خطأ هنا؟

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

المحلول

نظرا لأنك لا تشكل XML مناسبة في العبارة الحرفية XML الخاصة بك (في حالتك، فأنت لا تغلق علاماتك)، فلا يمكنك استخدام حرفي XML هنا. إما أن تكون إما أن يكون لديك حرفي XML الخاص بك تكون XML مناسبة، أو بدلا من تحويل التعليمات البرمجية الخاصة بك لاستخدامها كسلاسل. هكذا:

html.Append("<html><body>")

msgbox("nothing happens")

نصائح أخرى

لم أستخدم حرفي XML في VB، لكنني قمت ببناء الكثير من XML. أحب استخدام فئات StringWriter / XmlTextWritter:

StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
    XmlTextWriter xw = new XmlTextWriter(sw);
    xw.WriteStartElement("html");
    xw.WriteStartElement("body");
    xw.WriteRaw(contentExp);
    ...
    wr.WriteEndElement();   // body
    wr.WriteEndElement();   // html
}
// do something with sb.ToString()?

الحرف الواضحة ستكون أن حرفي XML تتطلب XML بشكل جيد. إذا كنت ترغب في التفاف الأشياء، فقم بإسقاط تعبير مضمن كما في ...

html.Append(<html><body><%= contentExp %></body></html>)

ليس إجابة، ولكن السؤال مرة أخرى لك. ماذا ستكون قيمة استخدام حرفي XML مع سلسلة باني. يبدو لي على الأقل أن هذا يمر ضد الحبوب. قم بإنشاء XML الخاص بك باستخدام حرفي ثم احصل فقط على تمثيل السلسلة باستخدام مكالمة طريقة .tosting () إذا كنت بحاجة إلى سلسلة.

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