本文整理汇总了C#中XmlBooster.XmlBContext.acceptUntil方法的典型用法代码示例。如果您正苦于以下问题:C# XmlBContext.acceptUntil方法的具体用法?C# XmlBContext.acceptUntil怎么用?C# XmlBContext.acceptUntil使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlBooster.XmlBContext
的用法示例。
在下文中一共展示了XmlBContext.acceptUntil方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: lAcceptPcData
/// <summary>Utility function which parse a PCDATA component
/// from a context. It takes the entities defined in the
/// in the configuration into account.</summary>
/// <param name="ctxt">the context from which the data must be
/// parsed</param>
/// <param name="maxLen">the maximal number of characters that
/// can be read.</param>
/// <param name="closingCh">a character on which parsing must stop
/// in addition to the standard < character.</param>
/// <param name="wsMode">indicates PRESERVE (default), REPLACE or COLLAPSE.</param>
public static string lAcceptPcData(XmlBContext ctxt,
int maxLen,
char closingCh,
int wsMode)
{
char ch;
char lastch = '.';
System.Text.StringBuilder buff;
string res;
buff = new System.Text.StringBuilder();
bool go_on = true;
while (go_on)
{
go_on = false;
while ((ctxt.current() != '<') && (ctxt.current() != closingCh)) // while 1
{
ch = ctxt.current();
ctxt.advance();
if (ch == '&'){
ch = lAcceptPcDataChr(ctxt);
} else {
if (wsMode >= WS_REPLACE){
if (ch == '\t' || ch == '\n' || ch == '\r'){
ch = ' ';
} // If
if (wsMode == WS_COLLAPSE){
if ((ch == ' ') && ((lastch == ' ') || (buff.Length == 0))){
ch = (char)0;
} else {
lastch = ch;
} // If
} else {
lastch = ch;
} // If
} // If
} // If
if (ch != '\0'){
buff.Append (ch);
} // If
}
// end while
if (ctxt.current() == '<'){
if (ctxt.lookAheadString("<![CDATA[")){
string cdata = ctxt.acceptUntil("]]>", true);
buff.Append (cdata);
go_on = true;
} else {
if (ctxt.lookAhead2('<','?')){
ctxt.skipTill ('?');
ctxt.accept2('?','>');
go_on = true;
} else {
} // If
} // If
} // If
}
if (wsMode == WS_COLLAPSE && lastch == ' ' && buff. Length > 0){
res = buff.ToString (0, buff.Length -1);
} else {
res = buff.ToString();
} // If
if ((maxLen > 0) && (res.Length > maxLen)){
ctxt.recoverableFail ("Maximum length exceeded");
} // If
return res;
}