本文整理汇总了C#中NodeData.SetValue方法的典型用法代码示例。如果您正苦于以下问题:C# NodeData.SetValue方法的具体用法?C# NodeData.SetValue怎么用?C# NodeData.SetValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NodeData
的用法示例。
在下文中一共展示了NodeData.SetValue方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ParseAttributeValueSlow
//.........这里部分代码省略.........
case '>':
pos++;
continue;
// attribute values cannot contain '<'
case '<':
Throw(pos, SR.Xml_BadAttributeChar, XmlException.BuildCharExceptionArgs('<', '\0'));
break;
// entity referece
case '&':
if (pos - _ps.charPos > 0)
{
_stringBuilder.Append(chars, _ps.charPos, pos - _ps.charPos);
}
_ps.charPos = pos;
int enclosingEntityId = _ps.entityId;
LineInfo entityLineInfo = new LineInfo(_ps.lineNo, _ps.LinePos + 1);
switch (HandleEntityReference(true, EntityExpandType.All, out pos))
{
case EntityType.CharacterDec:
case EntityType.CharacterHex:
case EntityType.CharacterNamed:
break;
case EntityType.Unexpanded:
if (_parsingMode == ParsingMode.Full && _ps.entityId == attributeBaseEntityId)
{
// construct text value chunk
int valueChunkLen = _stringBuilder.Length - valueChunkStartPos;
if (valueChunkLen > 0)
{
NodeData textChunk = new NodeData();
textChunk.lineInfo = valueChunkLineInfo;
textChunk.depth = attr.depth + 1;
textChunk.SetValueNode(XmlNodeType.Text, _stringBuilder.ToString(valueChunkStartPos, valueChunkLen));
AddAttributeChunkToList(attr, textChunk, ref lastChunk);
}
// parse entity name
_ps.charPos++;
string entityName = ParseEntityName();
// construct entity reference chunk
NodeData entityChunk = new NodeData();
entityChunk.lineInfo = entityLineInfo;
entityChunk.depth = attr.depth + 1;
entityChunk.SetNamedNode(XmlNodeType.EntityReference, entityName);
AddAttributeChunkToList(attr, entityChunk, ref lastChunk);
// append entity ref to the attribute value
_stringBuilder.Append('&');
_stringBuilder.Append(entityName);
_stringBuilder.Append(';');
// update info for the next attribute value chunk
valueChunkStartPos = _stringBuilder.Length;
valueChunkLineInfo.Set(_ps.LineNo, _ps.LinePos);
_fullAttrCleanup = true;
}
else
{
_ps.charPos++;
ParseEntityName();
}
pos = _ps.charPos;
break;
示例2: ParseAttributeValueSlow
//.........这里部分代码省略.........
continue;
case '"':
case '\'':
case '>':
pos++;
continue;
// attribute values cannot contain '<'
case '<':
Throw(pos, SR.Xml_BadAttributeChar, XmlException.BuildCharExceptionArgs('<', '\0'));
break;
// entity referece
case '&':
if (pos - _ps.charPos > 0)
{
_stringBuilder.Append(chars, _ps.charPos, pos - _ps.charPos);
}
_ps.charPos = pos;
switch (HandleEntityReference(true, EntityExpandType.All, out pos))
{
case EntityType.CharacterDec:
case EntityType.CharacterHex:
case EntityType.CharacterNamed:
break;
default:
pos = _ps.charPos;
break;
}
chars = _ps.chars;
continue;
default:
// end of buffer
if (pos == _ps.charsUsed)
{
goto ReadData;
}
// surrogate chars
else
{
char ch = chars[pos];
if (XmlCharType.IsHighSurrogate(ch))
{
if (pos + 1 == _ps.charsUsed)
{
goto ReadData;
}
pos++;
if (XmlCharType.IsLowSurrogate(chars[pos]))
{
pos++;
continue;
}
}
ThrowInvalidChar(chars, _ps.charsUsed, pos);
break;
}
}
}
ReadData:
// read new characters into the buffer
if (ReadData() == 0)
{
if (_ps.charsUsed - _ps.charPos > 0)
{
if (_ps.chars[_ps.charPos] != (char)0xD)
{
Debug.Assert(false, "We should never get to this point.");
Throw(SR.Xml_UnexpectedEOF1);
}
Debug.Assert(_ps.isEof);
}
else
{
if (!InEntity)
{
if (_fragmentType == XmlNodeType.Attribute)
{
if (attributeBaseEntityId != _ps.entityId)
{
Throw(SR.Xml_EntityRefNesting);
}
break;
}
Throw(SR.Xml_UnclosedQuote);
}
HandleEntityEnd(true);
}
}
pos = _ps.charPos;
chars = _ps.chars;
}
_ps.charPos = pos + 1;
attr.SetValue(_stringBuilder.ToString());
_stringBuilder.Length = 0;
}
示例3: OnNamespaceDecl
private void OnNamespaceDecl( NodeData attr ) {
if ( !supportNamespaces ) {
return;
}
string ns = attr.GetAtomizedValue( nameTable );
if ( ns.Length == 0 ) {
Throw( Res.Xml_BadNamespaceDecl, attr.lineInfo2.lineNo, attr.lineInfo2.linePos - 1 );
}
attr.SetValue( ns );
AddNamespace( attr.localName, ns, attr );
}
示例4: OnDefaultNamespaceDecl
private void OnDefaultNamespaceDecl( NodeData attr ) {
if ( !supportNamespaces ) {
return;
}
string ns = attr.GetAtomizedValue( nameTable );
attr.SetValue( ns );
attr.ns = nameTable.Add( XmlReservedNs.NsXmlNs );
if ( !curNode.xmlContextPushed ) {
PushXmlContext();
}
xmlContext.defaultNamespace = ns;
AddNamespace( string.Empty, ns, attr );
}
示例5: ParseAttributeValueSlow
//.........这里部分代码省略.........
switch (HandleEntityReference(true, EntityExpandType.All, out pos))
{
case EntityType.CharacterDec:
case EntityType.CharacterHex:
case EntityType.CharacterNamed:
break;
case EntityType.Unexpanded:
Debug.Assert(false, "The document contains an entity reference");
throw new NotSupportedException();
case EntityType.ExpandedInAttribute:
Debug.Assert(false, "The document contains an entity reference");
throw new NotSupportedException();
default:
pos = ps.charPos;
break;
}
chars = ps.chars;
continue;
default:
// end of buffer
if (pos == ps.charsUsed)
{
goto ReadData;
}
// surrogate chars
else
{
char ch = chars[pos];
if (ch >= SurHighStart && ch <= SurHighEnd)
{
if (pos + 1 == ps.charsUsed)
{
goto ReadData;
}
pos++;
if (chars[pos] >= SurLowStart && chars[pos] <= SurLowEnd)
{
pos++;
continue;
}
}
ThrowInvalidChar(pos, ch);
break;
}
}
}
ReadData:
// read new characters into the buffer
if (ReadData() == 0)
{
if (ps.charsUsed - ps.charPos > 0)
{
if (ps.chars[ps.charPos] != (char)0xD)
{
Debug.Assert(false, "We should never get to this point.");
Throw(Res.Xml_UnexpectedEOF1);
}
Debug.Assert(ps.isEof);
}
else
{
if (fragmentType == XmlNodeType.Attribute)
{
break;
}
Throw(Res.Xml_UnclosedQuote);
}
}
pos = ps.charPos;
chars = ps.chars;
}
if (attr.nextAttrValueChunk != null)
{
// construct last text value chunk
int valueChunkLen = stringBuilder.Length - valueChunkStartPos;
if (valueChunkLen > 0)
{
NodeData textChunk = new NodeData();
textChunk.lineInfo = valueChunkLineInfo;
textChunk.depth = attr.depth + 1;
textChunk.SetValueNode(XmlNodeType.Text, stringBuilder.ToString(valueChunkStartPos, valueChunkLen));
AddAttributeChunkToList(attr, textChunk, ref lastChunk);
}
}
ps.charPos = pos + 1;
attr.SetValue(stringBuilder.ToString());
stringBuilder.Length = 0;
}
示例6: ParseAttributeValueSlowAsync
//.........这里部分代码省略.........
case '<':
Throw( pos, Res.Xml_BadAttributeChar, XmlException.BuildCharExceptionArgs( '<', '\0' ) );
break;
// entity referece
case '&':
if ( pos - ps.charPos > 0 ) {
stringBuilder.Append( chars, ps.charPos, pos - ps.charPos );
}
ps.charPos = pos;
#if !SILVERLIGHT // Needed only for XmlTextReader (reporting of entities)
int enclosingEntityId = ps.entityId;
LineInfo entityLineInfo = new LineInfo( ps.lineNo, ps.LinePos + 1 );
#endif
var tuple_8 = await HandleEntityReferenceAsync( true, EntityExpandType.All).ConfigureAwait(false);
pos = tuple_8.Item1;
switch ( tuple_8.Item2 ) {
case EntityType.CharacterDec:
case EntityType.CharacterHex:
case EntityType.CharacterNamed:
break;
#if !SILVERLIGHT // Needed only for XmlTextReader (reporting of entities)
case EntityType.Unexpanded:
if ( parsingMode == ParsingMode.Full && ps.entityId == attributeBaseEntityId ) {
// construct text value chunk
int valueChunkLen = stringBuilder.Length - valueChunkStartPos;
if ( valueChunkLen > 0 ) {
NodeData textChunk = new NodeData();
textChunk.lineInfo = valueChunkLineInfo;
textChunk.depth = attr.depth + 1;
textChunk.SetValueNode( XmlNodeType.Text, stringBuilder.ToString( valueChunkStartPos, valueChunkLen ) );
AddAttributeChunkToList( attr, textChunk, ref lastChunk );
}
// parse entity name
ps.charPos++;
string entityName = await ParseEntityNameAsync().ConfigureAwait(false);
// construct entity reference chunk
NodeData entityChunk = new NodeData();
entityChunk.lineInfo = entityLineInfo;
entityChunk.depth = attr.depth + 1;
entityChunk.SetNamedNode( XmlNodeType.EntityReference, entityName );
AddAttributeChunkToList( attr, entityChunk, ref lastChunk );
// append entity ref to the attribute value
stringBuilder.Append( '&' );
stringBuilder.Append( entityName );
stringBuilder.Append( ';' );
// update info for the next attribute value chunk
valueChunkStartPos = stringBuilder.Length;
valueChunkLineInfo.Set( ps.LineNo, ps.LinePos );
fullAttrCleanup = true;
}
else {
ps.charPos++;
await ParseEntityNameAsync().ConfigureAwait(false);
}
pos = ps.charPos;
break;