本文整理汇总了C#中System.Configuration.XmlUtilWriter.RestoreStreamCheckpoint方法的典型用法代码示例。如果您正苦于以下问题:C# XmlUtilWriter.RestoreStreamCheckpoint方法的具体用法?C# XmlUtilWriter.RestoreStreamCheckpoint怎么用?C# XmlUtilWriter.RestoreStreamCheckpoint使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Configuration.XmlUtilWriter
的用法示例。
在下文中一共展示了XmlUtilWriter.RestoreStreamCheckpoint方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CopyConfigDefinitionsRecursive
//.........这里部分代码省略.........
else if (!elementLocationPathApplies && !IsLocationConfig) {
if (_removedSections != null && _removedSections.Contains(configKey)) {
removedSectionOrGroup = true;
}
}
}
}
if (recurse) {
#if DBG
string startElementName = reader.Name;
#endif
// flush, and get length of underlying stream
object checkpoint = utilWriter.CreateStreamCheckpoint();
// Copy this element node and up to the first subelement
xmlUtil.CopyXmlNode(utilWriter);
xmlUtil.CopyReaderToNextElement(utilWriter, true);
// Recurse
bool recurseWroteASection = CopyConfigDefinitionsRecursive(
configDefinitionUpdates, xmlUtil, utilWriter, elementLocationPathApplies, recurseLocationUpdates, recurseSectionUpdates,
recurseAddNewSections, recurseGroup, linePosition, indent);
// Copy the end element
xmlUtil.CopyXmlNode(utilWriter);
if (recurseWroteASection) {
wroteASection = true;
}
else {
// back out the change
utilWriter.RestoreStreamCheckpoint(checkpoint);
}
// Copy up to the next element, or exit this level.
xmlUtil.CopyReaderToNextElement(utilWriter, true);
}
else {
bool skip;
if (update == null) {
// remove the section from the file if we're in the correct location,
// or if the section or group should be removed from all locations
skip = elementLocationPathApplies || removedSectionOrGroup;
}
else {
// replace the section if the xml for it has been updated
// if it is a configSource, don't write it unless the configSource parameters have changed
skip = false;
if (update.UpdatedXml != null) {
ConfigurationSection configSection = (ConfigurationSection) update.SectionRecord.Result;
if ( String.IsNullOrEmpty(configSection.SectionInformation.ConfigSource) ||
configSection.SectionInformation.ConfigSourceModified) {
skip = true;
WriteSectionUpdate(utilWriter, update, linePosition, indent, true);
wroteASection = true;
}
}
}
if (skip) {
//
// Skip over the existing element, then
// copy up to the next element, or exit this level.
//
示例2: CopyConfigDeclarationsRecursive
//.........这里部分代码省略.........
reader.Read();
}
else {
closingElement= xmlUtil.UpdateStartElement(utilWriter, null, true, linePosition, indent);
}
if (closingElement == null) {
// Only if there is a closing element should
// we move to it
xmlUtil.CopyReaderToNextElement(utilWriter, true);
}
// Recurse
bool recurseWroteASection = CopyConfigDeclarationsRecursive(
recurseDeclarationUpdates, xmlUtil, utilWriter, recurseGroup, linePosition, indent);
if (closingElement != null) {
utilWriter.AppendSpacesToLinePosition(linePosition);
utilWriter.Write(closingElement);
// Since we already got to </configSections> in reader, lets
// indent so we can copy the element in the right place
utilWriter.AppendSpacesToLinePosition(parentLinePosition);
} else {
// Copy the end element
xmlUtil.CopyXmlNode(utilWriter);
}
if (recurseWroteASection || writeGroupUpdate) {
wroteASection = true;
}
else {
// back out the change
utilWriter.RestoreStreamCheckpoint(checkpoint);
}
// Copy up to the next element, or exit this level.
xmlUtil.CopyReaderToNextElement(utilWriter, true);
}
else {
bool skip;
bool skipChildElements = false;
if (sectionUpdate == null) {
skip = true;
if (writeGroupUpdate) {
// Insert an empty <sectionGroup type="typename" > node, to introduce the type
wroteASection = true;
utilWriter.Write(groupUpdate.UpdatedXml);
utilWriter.AppendNewLine();
utilWriter.AppendSpacesToLinePosition(linePosition);
utilWriter.Write(FORMAT_SECTIONGROUP_ENDELEMENT);
utilWriter.AppendNewLine();
utilWriter.AppendSpacesToLinePosition(linePosition);
}
else if (groupUpdate != null) {
// VSWhidbey 522450
// If groupUpdate exists, that means we've decided in GetConfigDeclarationUpdates
// that the section group should stay in the file.
Debug.Assert(groupUpdate.UpdatedXml == null, "groupUpdate.UpdatedXml == null");
Debug.Assert(!declarationUpdatesChild.HasUnretrievedSections(),
"If the group has any unretrieved section, we should have chosen the recursive code path above.");
wroteASection = true;
skip = false;
// We should skip all the child sections. If we indeed need to keep any child
示例3: CheckPreamble
private void CheckPreamble(byte[] preamble, XmlUtilWriter utilWriter, byte[] buffer) {
bool hasByteOrderMark = false;
using (Stream preambleStream = new MemoryStream(buffer)) {
byte[] streamStart = new byte[preamble.Length];
if (preambleStream.Read(streamStart, 0, streamStart.Length) == streamStart.Length) {
hasByteOrderMark = true;
for (int i = 0; i < streamStart.Length; i++) {
if (streamStart[i] != preamble[i]) {
hasByteOrderMark = false;
break;
}
}
}
}
if (!hasByteOrderMark) {
// Force the writer to emit byte order mark, then reset the stream
// so that it is written over.
object checkpoint = utilWriter.CreateStreamCheckpoint();
utilWriter.Write('x');
utilWriter.RestoreStreamCheckpoint(checkpoint);
}
}
示例4: CopyConfigDefinitionsRecursive
//.........这里部分代码省略.........
if ((this._removedSectionGroups != null) && this._removedSectionGroups.Contains(configKey))
{
flag6 = true;
}
else
{
flag3 = true;
str2 = configKey;
updates = null;
updates2 = null;
flag5 = false;
}
}
}
else if (sectionUpdates != null)
{
update = sectionUpdates.GetDefinitionUpdate(configKey);
}
else if ((!flag4 && !base.IsLocationConfig) && ((this._removedSections != null) && this._removedSections.Contains(configKey)))
{
flag6 = true;
}
}
if (flag3)
{
object o = utilWriter.CreateStreamCheckpoint();
xmlUtil.CopyXmlNode(utilWriter);
xmlUtil.CopyReaderToNextElement(utilWriter, true);
bool flag8 = this.CopyConfigDefinitionsRecursive(configDefinitionUpdates, xmlUtil, utilWriter, flag4, updates, updates2, flag5, str2, trueLinePosition, indent);
xmlUtil.CopyXmlNode(utilWriter);
if (flag8)
{
flag = true;
}
else
{
utilWriter.RestoreStreamCheckpoint(o);
}
xmlUtil.CopyReaderToNextElement(utilWriter, true);
}
else
{
bool flag9;
if (update == null)
{
flag9 = flag4 || flag6;
}
else
{
flag9 = false;
if (update.UpdatedXml != null)
{
ConfigurationSection result = (ConfigurationSection) update.SectionRecord.Result;
if (string.IsNullOrEmpty(result.SectionInformation.ConfigSource) || result.SectionInformation.ConfigSourceModified)
{
flag9 = true;
this.WriteSectionUpdate(utilWriter, update, trueLinePosition, indent, true);
flag = true;
}
}
}
if (flag9)
{
xmlUtil.SkipAndCopyReaderToNextElement(utilWriter, true);
}
else
{
xmlUtil.CopyOuterXmlToNextElement(utilWriter, true);
flag = true;
}
}
}
}
if (((sectionUpdates != null) && addNewSections) && sectionUpdates.HasNewSectionGroups())
{
trueLinePosition = parentLinePosition + indent;
if (reader.NodeType == XmlNodeType.EndElement)
{
if (utilWriter.IsLastLineBlank)
{
num3 = xmlUtil.TrueLinePosition;
}
else
{
num3 = parentLinePosition;
}
}
else
{
num3 = 0;
}
utilWriter.AppendSpacesToLinePosition(trueLinePosition);
if (this.WriteNewConfigDefinitionsRecursive(utilWriter, sectionUpdates, trueLinePosition, indent, true))
{
flag = true;
}
utilWriter.AppendSpacesToLinePosition(num3);
}
return flag;
}
示例5: CopyConfigDeclarationsRecursive
//.........这里部分代码省略.........
}
}
else
{
update2 = declarationUpdates.GetDeclarationUpdate(configKey);
}
bool flag3 = (sectionGroupUpdate != null) && (sectionGroupUpdate.UpdatedXml != null);
if (flag2)
{
object o = utilWriter.CreateStreamCheckpoint();
string s = null;
if (flag3)
{
utilWriter.Write(sectionGroupUpdate.UpdatedXml);
reader.Read();
}
else
{
s = xmlUtil.UpdateStartElement(utilWriter, null, true, trueLinePosition, oldIndent);
}
if (s == null)
{
xmlUtil.CopyReaderToNextElement(utilWriter, true);
}
bool flag4 = this.CopyConfigDeclarationsRecursive(updates2, xmlUtil, utilWriter, str2, trueLinePosition, oldIndent);
if (s != null)
{
utilWriter.AppendSpacesToLinePosition(trueLinePosition);
utilWriter.Write(s);
utilWriter.AppendSpacesToLinePosition(parentLinePosition);
}
else
{
xmlUtil.CopyXmlNode(utilWriter);
}
if (flag4 || flag3)
{
flag = true;
}
else
{
utilWriter.RestoreStreamCheckpoint(o);
}
xmlUtil.CopyReaderToNextElement(utilWriter, true);
}
else
{
bool flag5;
bool flag6 = false;
if (update2 == null)
{
flag5 = true;
if (flag3)
{
flag = true;
utilWriter.Write(sectionGroupUpdate.UpdatedXml);
utilWriter.AppendNewLine();
utilWriter.AppendSpacesToLinePosition(trueLinePosition);
utilWriter.Write("</sectionGroup>");
utilWriter.AppendNewLine();
utilWriter.AppendSpacesToLinePosition(trueLinePosition);
}
else if (sectionGroupUpdate != null)
{
flag = true;
flag5 = false;
flag6 = true;
}
}
else
{
flag = true;
if (update2.UpdatedXml == null)
{
flag5 = false;
}
else
{
flag5 = true;
utilWriter.Write(update2.UpdatedXml);
}
}
if (flag5)
{
xmlUtil.SkipAndCopyReaderToNextElement(utilWriter, true);
}
else
{
if (flag6)
{
xmlUtil.SkipChildElementsAndCopyOuterXmlToNextElement(utilWriter);
continue;
}
xmlUtil.CopyOuterXmlToNextElement(utilWriter, true);
}
}
}
}
return flag;
}
示例6: CheckPreamble
private void CheckPreamble(byte[] preamble, XmlUtilWriter utilWriter, byte[] buffer)
{
bool flag = false;
using (Stream stream = new MemoryStream(buffer))
{
byte[] buffer2 = new byte[preamble.Length];
if (stream.Read(buffer2, 0, buffer2.Length) == buffer2.Length)
{
flag = true;
for (int i = 0; i < buffer2.Length; i++)
{
if (buffer2[i] != preamble[i])
{
flag = false;
goto Label_004A;
}
}
}
}
Label_004A:
if (!flag)
{
object o = utilWriter.CreateStreamCheckpoint();
utilWriter.Write('x');
utilWriter.RestoreStreamCheckpoint(o);
}
}