471,610 Members | 1,373 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,610 software developers and data experts.

Appending Node to Large XML File

I have a large XML file, that is too large to read in to XmlDocument.

I need to append data to this XML file without creating a new file, since I
don't want to have two copies of the large file on the server.

I've not seen any example that works so far, even with google. Can anyone
help ?
Nov 12 '05 #1
1 2330
Hi Jonathan,

You can use XmlTextReader and XmlTextWriter. They're very fast. You can
programmatically delete the old file if you don't want to keep two large
files.

To start you can read through some documentations here:
http://msdn.microsoft.com/library/de...us/cpref/html/
frlrfsystemxmlxmltextwriterclasstopic.asp
http://msdn.microsoft.com/library/de...us/cpref/html/
frlrfsystemxmlxmltextreaderclassnodetypetopic.asp
http://msdn.microsoft.com/library/de...us/cpref/html/
frlrfsystemxmlxmltextwriterclasstopic.asp

The following are some sample code:

//reader the Large Xml file using XmlTextReader
XmlTextReader reader = new XmlTextReader(@"C:\Test\LargeXmlFile.xml");

//XmlTextWriter to write Large XML File
XmlTextWriter cdocWriter = new
XmlTextWriter(@"C:\Test\LargeXmlFile_New.xml", Encoding.UTF8);

writer.Formatting = Formatting.Indented;

writer.WriteStartDocument();

// Read the file and display each of the nodes.
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
writer.WriteStartElement(reader.Name);
writer.WriteAttributes(reader,false);
if (reader.IsEmptyElement)
writer.WriteEndElement();
break;
//You can have some test statement here to append nodes
if (reader.Name == "????")
{
//TODO: do something
}
case XmlNodeType.Text:
writer.WriteString(reader.Value);
break;
case XmlNodeType.Whitespace:
case XmlNodeType.SignificantWhitespace:
writer.WriteWhitespace(reader.Value);
break;
case XmlNodeType.CDATA:
writer.WriteCData(reader.Value);
break;
case XmlNodeType.Comment:
writer.WriteComment(reader.Value);
break;
case XmlNodeType.EntityReference:
writer.WriteEntityRef(reader.Name);
break;
case XmlNodeType.EndElement:
//You can have some test statement here to append nodes
if (reader.Name == "????")
{
//TODO: do something
}

writer.WriteEndElement();
break;
}
}

writer.WriteEndDocument();
writer.Flush();
writer.Close();
reader.Close();

Hope this helps!
--
Yingzi Le
LongHorn SDK Team

This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
From: "Jonathan Taylor" <jo****@00000000homtail.com>
Subject: Appending Node to Large XML File
Date: Fri, 20 May 2005 13:18:24 +0100
Lines: 9
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2527
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2527
X-RFC2646: Format=Flowed; Original
Message-ID: <#6**************@TK2MSFTNGP10.phx.gbl>
Newsgroups: microsoft.public.dotnet.xml
NNTP-Posting-Host: 82-41-12-138.cable.ubr02.edin.blueyonder.co.uk 82.41.12.138Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFT NGP10.phx.gbl
Xref: TK2MSFTNGXA01.phx.gbl microsoft.public.dotnet.xml:7123
X-Tomcat-NG: microsoft.public.dotnet.xml

I have a large XML file, that is too large to read in to XmlDocument.

I need to append data to this XML file without creating a new file, since Idon't want to have two copies of the large file on the server.

I've not seen any example that works so far, even with google. Can anyone
help ?


Nov 12 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by Novice | last post: by
17 posts views Thread by Grant Austin | last post: by
4 posts views Thread by Jesper Stocholm | last post: by
2 posts views Thread by tony.collings | last post: by
2 posts views Thread by Shaurya Vardhan | last post: by
8 posts views Thread by David Thielen | last post: by
2 posts views Thread by Svein Erik | last post: by
reply views Thread by leo001 | last post: by
reply views Thread by CCCYYYY | last post: by
1 post views Thread by ZEDKYRIE | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.