2012年6月2日土曜日

ファイル名、タグ名、属性名、属性値で一致するものを削除

//ファイル名、タグ名、属性名、属性値で一致するものを削除 
       public void DeleteXMLElementByAttributeValue(string xmlFiles, string tagName, string attName,string attValue)
        {
            System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
            // XMLファイルを読み込む
            xmlDoc.Load(xmlFiles);
            //ルート要素を取得する
            System.Xml.XmlElement rootElement = xmlDoc.DocumentElement;
            //ルート要素の子要素である"zip"を取得する
            System.Xml.XmlNodeList nodelist = rootElement.GetElementsByTagName(tagName);
            //指定した"<tagName>"タグが存在するか?
            if (nodelist.Count > 0)
            {
                foreach (System.Xml.XmlElement item in nodelist)
                {
                    //<Tag name="AAAA">で検索
                    if (attValue == item.GetAttribute(attName))
                    {
                        //zipタグを削除する
                        rootElement.RemoveChild(nodelist.Item(0));
                        break;
                    }
                }

            }
            //ファイルに保存する
            xmlDoc.Save(xmlFiles);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            DeleteXMLElementByAttributeValue(@"sample.xml", "DataInfoAry", "name", "unko");
        }
 //===============================================================
//serializer.Serialize と serializer.Serialize serializer.Serialize  

//===============================================================
            //保存先のファイル名
            string fileName = @"sample.xml";

            //保存するクラス(SampleClass)のインスタンスを作成
            SampleClass obj = new SampleClass();
            obj.Message = "テストです。";
            obj.Number = 123;
            DataInfo[] di = new DataInfo[10];
            obj.DataInfoAry = di;

            //XmlSerializerオブジェクトを作成
            //オブジェクトの型を指定する
            System.Xml.Serialization.XmlSerializer serializer =
                new System.Xml.Serialization.XmlSerializer(typeof(SampleClass));
            //書き込むファイルを開く
            System.IO.FileStream fs = new System.IO.FileStream(
                fileName, System.IO.FileMode.Create);
            //シリアル化し、XMLファイルに保存する
            serializer.Serialize(fs, obj);
            //ファイルを閉じる
            fs.Close();

//========================================================================

0 件のコメント:

コメントを投稿