C#中xml的写入与读取

xml文件的写入与读取

  • xml文件的创建与写入
    • xml文件的读取

xml文件的创建与写入

// An highlighted block
using System.Windows.Forms;
using System.Xml;
// An highlighted block
//获取根节点对象
XmlDocument xmlDoc = new XmlDocument();
//创建类型声明节点    
XmlNode node = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
xmlDoc.AppendChild(node);
 //创建根节点    
XmlNode root = xmlDoc.CreateElement("Users");
 xmlDoc.AppendChild(root);
XmlNode node1 = xmlDoc.CreateNode(XmlNodeType.Element,"User1",null);
CreateNode(xmlDoc, node1, "name", "xuwei");
CreateNode(xmlDoc, node1, "sex", "male");
CreateNode(xmlDoc, node1, "age", "25");
root.AppendChild(node1);
XmlNode node2 = xmlDoc.CreateNode(XmlNodeType.Element,"User2",null);
CreateNode(xmlDoc,node2,"name","smm");
CreateNode(xmlDoc,node2,"sex","female");
CreateNode(xmlDoc,node2,"age","21");
root.AppendChild(node2);
xmlDoc.Save("c://data2.xml");


 public void CreateNode(XmlDocument xmlDoc, XmlNode parentNode, string name, string value)
        {
            XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, name, null);
            node.InnerText = value;
            parentNode.AppendChild(node);
        }

C#中xml的写入与读取_第1张图片

xml文件的读取

读取属性的值

// An highlighted block
 //获取xml的路径
<pdfreport>
  <page>
    <pdfcontentstring>
      <showtextaligned fieldname="建築主氏名" location="160,705" fontsize="10"/>
      <showtextaligned fieldname="地名地番" location="160,660" fontsize="10"/>
      <showtextaligned fieldname="延べ面積" location="160,618" fontsize="10"/>
      <showtextaligned fieldname="主要用途" location="160,570" fontsize="10"/>
      <showtextaligned fieldname="工事種別" location="160,525" fontsize="10"/>
      <showtextaligned fieldname="階数地上" location="250,480" fontsize="10"/>
      <showtextaligned fieldname="階数地下" location="450,480" fontsize="10"/>
      <showtextaligned fieldname="構造" location="160, 438" fontsize="10"/>
      <showtextaligned fieldname="確認年月日" location="160, 370" fontsize="10" datetimeformat="gyyyy年MM月dd日" culture="ja-JP"/>
      <showtextaligned fieldname="確認番号" location="350, 370" fontsize="10"/>
      <showtextaligned fieldname="検査年月日" location="160, 310" fontsize="10" datetimeformat="gyyyy年MM月dd日" culture="ja-JP"/>
      <showtextaligned fieldname="検査番号" location="160, 295" fontsize="10" />
      <showtextaligned fieldname="備考" location="160, 270" fontsize="10" />

    </pdfcontentstring>
  </page>
</pdfreport>

要求获取fieldname属性的值

// An highlighted block
 //获取xml的路径
string pdfXmlPath = Path.Combine(System.Windows.Forms.Application.StartupPath, "記載事項建築PdfWriteInfo.xml");
 //将XML文件加载进来
 XmlDocument doc = new XmlDocument();
 doc.Load(pdfXmlPath);
 XmlNode xn = doc.SelectSingleNode("pdfreport");
 XmlNode xn2 = xn.SelectSingleNode("page");
 XmlNode xn3 = xn2.SelectSingleNode("pdfcontentstring");
 XmlNodeList list = xn3.ChildNodes;//获取到pdfcontentstring节点下的所有子节点
List<string> info = new List<string>();
foreach (XmlNode item in list)
      {
          XmlElement xe = (XmlElement)item;
          info.Add(xe.GetAttribute("fieldname").ToString());
        }
       

读取内容

// An highlighted block
<PluginSetting>
    <General>
        <SerchSetDB>Data Source=192.168.66.107;Initial Catalog=IckwPasCALWebExtEnv;Persist Security Info=True;User ID=sa;Password=123456</SerchSetDB>
        <!--■【デバック用】クライアントへのログ出力(PW_Report.log)・・・「Ture」でログを出力する、「False」でログを出力しない-->
      <OutputLog>True</OutputLog>
    </General>
    <Setting>
        <ThemeName>埋蔵文化財</ThemeName>
        <UserCode>wh</UserCode>
        <UserCode1>003778</UserCode1>
        <GroupCode>1360</GroupCode>                 
    </Setting>
    <GengoSetting>
        <和暦変換フィールド>CH_Uketukebi</和暦変換フィールド>
        <和暦変換フィールド>CH_Tochisyutokubi</和暦変換フィールド>
        <和暦変換フィールド>CH_TodokedeSintatubi</和暦変換フィールド>
        <和暦変換フィールド>CH_Koujikaisi</和暦変換フィールド>
        <和暦変換フィールド>CH_KoujiSyuryo</和暦変換フィールド>
        <和暦変換フィールド>CH_TyakusyuYoteiJiki</和暦変換フィールド>
        <和暦変換フィールド>CH_SyuryoYoteiJiki</和暦変換フィールド>
        <和暦変換フィールド>CH_ChosaHoukokubi</和暦変換フィールド>
        <和暦変換フィールド>CH_Hakkenbi</和暦変換フィールド>
        <和暦変換フィールド>CH_CKikanSyuryo</和暦変換フィールド>
        <和暦変換フィールド>CH_ChosaStart</和暦変換フィールド>
        <和暦変換フィールド>CH_ChosaEnd</和暦変換フィールド>

        <!--台帳画面の元号コンボボックス-->
        <GENGOULIST>明治</GENGOULIST>
        <GENGOULIST>大正</GENGOULIST>
        <GENGOULIST>昭和</GENGOULIST>
        <GENGOULIST>平成</GENGOULIST>
        <GENGOULIST>新号</GENGOULIST>

        <!--埋蔵文化財プラグイン独自の和暦変換をするフラグ。デフォルトfalseの場合、.net標準処理。-->
        <USEGENGOUDATE>true</USEGENGOUDATE>

        <!--元号の切り替え日-->
        <GENGOUDATE>1868-01-01 00:00:00</GENGOUDATE>
        <GENGOUDATE>1912-07-30 00:00:00</GENGOUDATE>
        <GENGOUDATE>1926-12-25 00:00:00</GENGOUDATE>
        <GENGOUDATE>1989-01-08 00:00:00</GENGOUDATE>
        <GENGOUDATE>2019-05-01 00:00:00</GENGOUDATE>

        <!--和暦変換のフォーマットパラメータ。デフォルトはPW本体と同じggyy年M月d日-->
        <DateTimeFormat>ggy年MM月dd日</DateTimeFormat>
    </GengoSetting>
</PluginSetting>

将获取到的内容显示到对应的文本框上

// An highlighted block
  Dictionary<string, List<string>> hashMap = new Dictionary<string, List<string>>();
            label1.Text = "ThemeName";
            label2.Text = "UserCode";
            label3.Text = "UserCode1";
            label4.Text = "GroupCode";
            //将XML文件加载进来
            XmlDocument doc = new XmlDocument();
            doc.Load("C://Users//XY//Desktop//PW_Report.dll.config");
            //获取根节点
            XmlElement xmlRoot = doc.DocumentElement;
            //、获取根结点下的子节点
            foreach (XmlElement childRoot in xmlRoot)
            {
                if (childRoot.Name == "Setting")
                { 
                    foreach(XmlNode node in childRoot.ChildNodes){
                        if (node.Name == "ThemeName"&& node.InnerText!=null)
                        {
                            textBox1.Text = node.InnerText;
                            string name = node.InnerText;
                            Console.Write(name);
                        
                      }
                        if (node.Name == "UserCode" && node.InnerText != null)
                        {
                            textBox2.Text = node.InnerText;
                        }
                        if (node.Name == "UserCode1" && node.InnerText !=null)
                        {
                            textBox3.Text = node.InnerText;
                        }
                        if (node.Name == "GroupCode" && node.InnerText != null)
                        {
                            textBox4.Text = node.InnerText;
                        }
                    }
     
                }
              if (childRoot.Name == "GengoSetting")
                {
                    List<string> info = new List<string>();
                    List<string> info1= new List<string>();
                    List<string> info2= new List<string>();
                    List<string> info3= new List<string>();
                    List<string> info4= new List<string>();
                   
                    XmlNodeList list = childRoot.SelectNodes("和暦変換フィールド");
                    XmlNodeList list1 = childRoot.SelectNodes("ENGOULIST");
                    XmlNodeList list2 = childRoot.SelectNodes("USEGENGOUDATE");
                    XmlNodeList list3 = childRoot.SelectNodes("GENGOUDATE");
                    XmlNodeList list4 = childRoot.SelectNodes("DateTimeFormat");
                    info= getdata(list);
                    info1= getdata(list1);
                    info2= getdata(list2);
                    info3= getdata(list3);
                    info4= getdata(list4);
             
                    hashMap.Add("和暦変換フィールド", info);
                    hashMap.Add("ENGOULIST", info1);
                    hashMap.Add("USEGENGOUDATE", info2);
                    hashMap.Add("GENGOUDATE", info3);
                    hashMap.Add("DateTimeFormat", info4);
                    string count = getstring(hashMap["和暦変換フィールド"]);
                    string count1 = getstring(hashMap["ENGOULIST"]);
                    string count2 = getstring(hashMap["USEGENGOUDATE"]);
                    string count3 = getstring(hashMap["GENGOUDATE"]);
                    string count4 = getstring(hashMap["DateTimeFormat"]);
                    textBox5.Text = count;
                    textBox6.Text = count1;
                    textBox7.Text = count2;
                    textBox8.Text = count3;
                    textBox9.Text = count4;
                }
                    }
                }



        //将节点名相同的子节点存入list中
        public List<string> getdata(XmlNodeList list)
        {
            List<string> info = new List<string>();
            foreach (XmlNode item in list)
            {
                info.Add(item.InnerText);
            }
            return info;
        }


        //遍历取出list中存放的值
        public string getstring(List<string> list)
        {
            string count = "";
            for (int i = 0; i < list.Count - 1; i++)
            {
                count = count + " " + " "
                    + list[i];

            }

你可能感兴趣的:(c#学习)