青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

read and write XMl in 2 means (XML一)

Read and Write XML Without Loading an Entire Document into Memory

Solution

To write XML, create an XmlTextWriter that wraps a stream and use Write methods (such as WriteStartElement and WriteEndElement). To read XML, create an XmlTextReader that wraps a stream and call Read to move from node to node.


To write XML to any stream, you can use the streamlined XmlTextWriter. It provides Write methods that write one node at a time. These include

  • WriteStartDocument, which writes the document prologue, and WriteEndDocument, which closes any open elements at the end of the document.

  • WriteStartElement, which writes an opening tag for the element you specify. You can then add more elements nested inside this element, or you can call WriteEndElement to write the closing tag.

  • WriteElementString, which writes an entire element, with an opening tag, a closing tag, and text content.

  • WriteAttributeString, which writes an entire attribute for the nearest open element, with a name and value.

To read the XML, you use the Read method of the XmlTextReader. This method advances the reader to the next node, and returns true. If no more nodes can be found, it returns false. You can retrieve information about the current node through XmlTextReader properties, including its Name, Value, and NodeType.


EX:

using System;
using System.Xml;
using System.IO;
using System.Text;

public class ReadWriteXml {

    private static void Main() {

        // Create the file and writer.
        FileStream fs = new FileStream("products.xml", FileMode.Create);
        XmlTextWriter w = new XmlTextWriter(fs, Encoding.UTF8);

        // Start the document.
        w.WriteStartDocument();
        w.WriteStartElement("products");

        // Write a product.
        w.WriteStartElement("product");
        w.WriteAttributeString("id", "1001");
        w.WriteElementString("productName", "Gourmet Coffee");
        w.WriteElementString("productPrice", "0.99");
        w.WriteEndElement();

        // Write another product.
        w.WriteStartElement("product");
        w.WriteAttributeString("id", "1002");
        w.WriteElementString("productName", "Blue China Tea Pot");
        w.WriteElementString("productPrice", "102.99");
        w.WriteEndElement();

        // End the document.
        w.WriteEndElement();
        w.WriteEndDocument();
        w.Flush();
        fs.Close();

        Console.WriteLine("Document created. " +
         "Press Enter to read the document.");
        Console.ReadLine();

        fs = new FileStream("products.xml", FileMode.Open);
        XmlTextReader r = new XmlTextReader(fs);

        // Read all nodes.
        while (r.Read()) {
 
           if (r.NodeType == XmlNodeType.Element) {

                Console.WriteLine();
                Console.WriteLine("<" + r.Name + ">");

                if (r.HasAttributes) {

                    for (int i = 0; i < r.AttributeCount; i++) {
                        Console.WriteLine("\tATTRIBUTE: " +
                          r.GetAttribute(i));
                    }
                }
            }else if (r.NodeType == XmlNodeType.Text) {
                Console.WriteLine("\tVALUE: " + r.Value);
            }
        }
        Console.ReadLine();
    }
}

-----------------------------------------------------------
Insert Nodes in an XML Document





Solution

Create the node using the appropriate XmlDocument method (such as CreateElement, CreateAttribute,
CreateNode, and so on). Then insert it using the appropriate XmlNode method (such as InsertAfter,
InsertBefore, or AppendChild).


The following example demonstrates this technique by programmatically creating a new XML document.

using System;
using System.Xml;

public class GenerateXml {

    private static void Main() {

        // Create a new, empty document.
        XmlDocument doc = new XmlDocument();
        XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
        doc.AppendChild(docNode);

        // Create and insert a new element.
        XmlNode productsNode = doc.CreateElement("products");
        doc.AppendChild(productsNode);

        // Create a nested element (with an attribute).
        XmlNode productNode = doc.CreateElement("product");
        XmlAttribute productAttribute = doc.CreateAttribute("id");
        productAttribute.Value = "1001";
        productNode.Attributes.Append(productAttribute);
        productsNode.AppendChild(productNode);

        // Create and add the sub-elements for this product node
        // (with contained text data).
        XmlNode nameNode = doc.CreateElement("productName");
        nameNode.AppendChild(doc.CreateTextNode("Gourmet Coffee"));
        productNode.AppendChild(nameNode);
        XmlNode priceNode = doc.CreateElement("productPrice");
        priceNode.AppendChild(doc.CreateTextNode("0.99"));
        productNode.AppendChild(priceNode);

        // Create and add another product node.
        productNode = doc.CreateElement("product");
        productAttribute = doc.CreateAttribute("id");
        productAttribute.Value = "1002";
        productNode.Attributes.Append(productAttribute);
        productsNode.AppendChild(productNode);
        nameNode = doc.CreateElement("productName");
        nameNode.AppendChild(doc.CreateTextNode("Blue China Tea Pot"));
        productNode.AppendChild(nameNode);
        priceNode = doc.CreateElement("productPrice");
        priceNode.AppendChild(doc.CreateTextNode("102.99"));
        productNode.AppendChild(priceNode);

        // Save the document (to the Console window rather than a file).
        doc.Save(Console.Out);
        Console.ReadLine();
    }
}

The generated document looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<products>
  <product id="1001">
    <productName>Gourmet Coffee</productName>
    <productPrice>0.99</productPrice>
  </product>
  <product id="1002">
    <productName>Blue China Tea Pot</productName>
    <productPrice>102.99</productPrice>
  </product>
</products>
-----------------------------------------------------------
------
Quickly Append Nodes in an XML Document

Solution

Create a helper function that accepts a tag name and content and can generate the entire element
at once. Alternatively, use the XmlDocument.CloneNode method to copy branches of an XmlDocument.


Here's an example of one such helper class:

using System;
using System.Xml;

public class XmlHelper {

    public static XmlNode AddElement(string tagName, 
      string textContent, XmlNode parent) {

        XmlNode node = parent.OwnerDocument.CreateElement(tagName);
        parent.AppendChild(node);

        if (textContent != null) {

            XmlNode content;
            content = parent.OwnerDocument.CreateTextNode(textContent);
            node.AppendChild(content);
        }
        return node;
    }

    public static XmlNode AddAttribute(string attributeName,
      string textContent, XmlNode parent) {

        XmlAttribute attribute;
        attribute = parent.OwnerDocument.CreateAttribute(attributeName);
        attribute.Value = textContent;
        parent.Attributes.Append(attribute);

        return attribute;
    }
}

You can now condense the XML-generating code from recipe 5.2 with the simpler syntax shown here:

public class GenerateXml {

    private static void Main() {

        // Create the basic document.
        XmlDocument doc = new XmlDocument();
        XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
        doc.AppendChild(docNode);
        XmlNode products = doc.CreateElement("products");
        doc.AppendChild(products);

        // Add two products.
        XmlNode product = XmlHelper.AddElement("product", null, products);
        XmlHelper.AddAttribute("id", "1001", product);
        XmlHelper.AddElement("productName", "Gourmet Coffee", product);
        XmlHelper.AddElement("productPrice", "0.99", product);

        product = XmlHelper.AddElement("product", null, products);
        XmlHelper.AddAttribute("id", "1002", product);
        XmlHelper.AddElement("productName", "Blue China Tea Pot", product);
        XmlHelper.AddElement("productPrice", "102.99", product);

        // Save the document (to the Console window rather than a file).
        doc.Save(Console.Out);
        Console.ReadLine();
    }
}

Alternatively, you might want to take the helper methods such as AddAttribute and AddElement and
make them instance methods in a custom class you derive from XmlDocument.

Another approach to simplifying writing XML is to duplicate nodes using the XmlNode.CloneNode
method. CloneNode accepts a Boolean deep parameter. If you supply true, CloneNode will duplicate
the entire branch, with all nested nodes.

Here's an example that creates a new product node by copying the first node.

// (Add first product node.)

// Create a new element based on an existing product.
product = product.CloneNode(true);

// Modify the node data.
product.Attributes[0].Value = "1002";
product.ChildNodes[0].ChildNodes[0].Value = "Blue China Tea Pot";
product.ChildNodes[1].ChildNodes[0].Value = "102.99";

// Add the new element.
products.AppendChild(product);

Notice that in this case, certain assumptions are being made about the existing nodes (for example,
that the first child in the item node is always the name, and the second child is always the
price). If this assumption isn't guaranteed to be true, you might need to examine the node name
programmatically.










posted on 2005-11-23 18:09 夢在天涯 閱讀(745) 評論(0)  編輯 收藏 引用 所屬分類: C#/.NET

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812202
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲三级电影全部在线观看高清| 性欧美xxxx视频在线观看| 亚洲欧美电影院| 亚洲视屏在线播放| 9i看片成人免费高清| 亚洲国产另类 国产精品国产免费| 久久婷婷国产综合精品青草| 久久久久久亚洲精品杨幂换脸 | 能在线观看的日韩av| 亚洲精品乱码久久久久久久久| 99在线精品视频| 狠狠色伊人亚洲综合网站色| 亚洲精品一区中文| 国模套图日韩精品一区二区| 亚洲欧洲视频| 国产精品腿扒开做爽爽爽挤奶网站| 久久激情综合网| 欧美成人精品一区| 香蕉免费一区二区三区在线观看| 久久免费精品视频| 亚洲欧美日韩一区在线观看| 久久久蜜桃一区二区人| 亚洲伊人网站| 男人天堂欧美日韩| 欧美在线关看| 欧美日韩免费观看中文| 欧美99久久| 国产精品日韩专区| 亚洲黄网站在线观看| 国产一区二区三区自拍| 99re热这里只有精品视频| 亚洲第一精品久久忘忧草社区| 久久精品九九| 国产精品成人观看视频国产奇米| 久久综合久久综合九色| 国产精品黄色| 亚洲国产精品123| 国产乱码精品一区二区三| 亚洲欧洲一区二区天堂久久| 一区视频在线看| 午夜精彩视频在线观看不卡 | 亚洲人成绝费网站色www| 一区国产精品| 欧美在线视频一区二区三区| 亚洲在线视频网站| 欧美日韩国产色综合一二三四| 免费视频久久| 国产一区二区三区最好精华液| 亚洲一区二区三区四区在线观看 | 一区二区三区福利| 亚洲精品一二三区| 免费一区视频| 亚洲电影在线看| 亚洲电影观看| 久久综合电影一区| 欧美阿v一级看视频| 在线日韩成人| 能在线观看的日韩av| 亚洲国产成人久久综合| 亚洲精品免费网站| 欧美激情国产精品| 另类图片国产| 一区二区三区在线视频观看| 久久九九免费视频| 男人的天堂亚洲在线| 亚洲国产裸拍裸体视频在线观看乱了| 久久精品中文字幕免费mv| 久久在线视频| 欧美午夜影院| 亚洲一区二区在线视频| 国内久久婷婷综合| 久热精品视频在线观看| 在线看欧美日韩| 欧美国产极速在线| 日韩一级黄色大片| 午夜日韩在线| 欧美成人影音| 久久午夜精品| 欧美日韩八区| 欧美日韩亚洲91| 亚洲伦理一区| 99在线|亚洲一区二区| 美女成人午夜| 亚洲国产精品第一区二区| 欧美高清视频在线播放| 亚洲国产成人不卡| 亚洲精品自在在线观看| 欧美一区二区三区免费看| 亚洲婷婷在线| 亚洲国产免费| 蜜桃精品久久久久久久免费影院| 欧美亚洲一区在线| 久久综合色影院| 亚洲一区久久| 久久久久se| 亚洲国产精品一区制服丝袜| 亚洲黄色一区二区三区| 一区二区三区福利| 欧美在线免费| 欧美激情在线| 中国成人亚色综合网站| 日韩一级免费| 亚洲一区二区三区四区中文| 国产精品www网站| 久久综合伊人77777| 欧美日韩精品二区| 亚洲视频www| 欧美日韩一区二区三区四区五区| 国产伦精品一区| 久久精品夜夜夜夜久久| 免费影视亚洲| 亚洲精品在线观| 国产精品成人观看视频免费| 久久不射中文字幕| 最新中文字幕一区二区三区| 极品尤物一区二区三区| 国产精品嫩草99a| 好吊一区二区三区| 午夜精品久久久久久久99水蜜桃 | 亚洲国产天堂久久综合网| 亚洲日韩欧美视频| 性欧美激情精品| 国产综合色精品一区二区三区 | 一区免费观看| 欧美日韩一区不卡| 久久国产精品72免费观看| 亚洲人成在线播放网站岛国| 欧美在线视频免费观看| 亚洲精品乱码久久久久久久久| 欧美亚洲一区| 日韩午夜电影在线观看| 免费在线欧美视频| 亚洲激情社区| 国产在线观看91精品一区| 午夜精品影院在线观看| 亚洲级视频在线观看免费1级| 午夜精品久久一牛影视| 亚洲高清视频在线| 国产欧美精品一区| 久久久欧美一区二区| 欧美在线视频观看| 亚洲一区欧美| 亚洲国产精品黑人久久久| 久久精品国语| 欧美在线观看一区二区三区| 99视频精品免费观看| 在线观看亚洲一区| 国产亚洲精品成人av久久ww| 欧美激情中文字幕一区二区| 久久精品视频播放| 亚洲欧美精品| 这里是久久伊人| 妖精成人www高清在线观看| 亚洲黄色成人网| 亚洲免费不卡| 亚洲精品偷拍| 亚洲三级电影在线观看| 韩日欧美一区二区| 国产日本欧洲亚洲| 国产欧美日韩三区| 国产精品区二区三区日本| 欧美色播在线播放| 欧美午夜一区二区| 欧美精品免费看| 欧美日韩18| 欧美日韩在线播放三区| 欧美久久在线| 欧美日韩综合另类| 国产精品久久久久久久电影| 国产精品日韩久久久久| 国产日韩在线一区二区三区| 国产日韩欧美一区| 欧美成熟视频| 亚洲一区二区三区激情| 亚洲宅男天堂在线观看无病毒| 亚洲一本视频| 性感少妇一区| 亚洲欧美日韩精品久久久久| 久久九九99视频| 欧美成在线观看| 国产精品xxxav免费视频| 国产精品嫩草影院一区二区| 国产欧美日韩另类一区| 国语自产精品视频在线看抢先版结局 | 日韩亚洲综合在线| 一区二区三区在线免费播放| 在线观看亚洲精品| 91久久在线视频| 亚洲国产91色在线| 午夜久久一区| 另类酷文…触手系列精品集v1小说| 亚洲第一页自拍| 在线亚洲电影| 久久精品国产亚洲aⅴ| 免费日韩av电影| 欧美性猛交99久久久久99按摩| 国产欧美日韩综合| 亚洲激情专区| 亚洲综合国产激情另类一区| 久久久国产精品一区二区三区|