【问题标题】:Loading XML file data加载 XML 文件数据
【发布时间】:2014-04-10 15:30:16
【问题描述】:

加载数据,仅加载我保存的XML 文件中的名称。

这是XML 文件: // 训练脸文件

 <?xml version="1.0" encoding="utf-8"?>
 <Faces_For_Training>
     <FACE>
         <NAME>john</NAME>
         <Age>25</Age>
         <informations>Student in MS university</informations>
         <FILE>face_john 25Student in MS university_905807542.jpg</FILE>
     </FACE>
     <FACE>
         <NAME>mark</NAME>
         <Age>40</Age>
         <informations>engineer ....</informations>
         <FILE>face_mark 40engineer ....._390671740.jpg</FILE>
     </FACE>
  </Faces_For_Training>

我只能加载名字的问题。如何加载年龄和带有名字的额外信息。 我加载名称并将其放入List &lt;string&gt; 并使其等于面label。我希望它加载 Age 和其他信息。

private bool LoadTrainingData(string Folder_location)
{
    if (File.Exists(Folder_location +"\\TrainedLabels.xml"))
    {
        try
        {
            //message_bar.Text = "";
            Names_List.Clear();
            Names_List_ID.Clear();
            trainingImages.Clear();
            FileStream filestream = File.OpenRead(Folder_location + "\\TrainedLabels.xml");
            long filelength = filestream.Length;
            byte[] xmlBytes = new byte[filelength];
            filestream.Read(xmlBytes, 0, (int)filelength);
            filestream.Close();

            MemoryStream xmlStream = new MemoryStream(xmlBytes);

            using (XmlReader xmlreader = XmlTextReader.Create(xmlStream))
            {
                while (xmlreader.Read())
                {
                    if (xmlreader.IsStartElement())
                    {
                        switch (xmlreader.Name)
                        {
                            case "NAME":
                                if (xmlreader.Read())
                                {
                                    Names_List_ID.Add(Names_List.Count); //0, 1, 2, 3....
                                    Names_List.Add(xmlreader.Value.Trim());
                                    NumLabels += 3;


                                }
                                break;
                            case "FILE":
                                if (xmlreader.Read())
                                {
                                    //PROBLEM HERE IF TRAININGG MOVED
                                    trainingImages.Add(new Image<Gray, byte>(Application.StartupPath + "\\TrainedFaces\\" + xmlreader.Value.Trim()));
                                }
                                break;
                           // case "Age":
                               //   if (xmlreader.Read())
                                  //{
                                  //    Age_List.Add(xmlreader.Value.Trim());


                               //   }
                                // break;
                        }
                    }
                }
            }
            ContTrain = NumLabels;

【问题讨论】:

    标签: c# xml c#-4.0 xml-parsing


    【解决方案1】:

    你可以尝试使用 linq to xml

        private void LoadTrainingData(string folderLocation)
        {
            var filePath = folderLocation + "\\TrainedLabels.xml";
    
            if (File.Exists(filePath))
            {
                var doc = XDocument.Load(folderLocation + "\\TrainedLabels.xml");
                var items = doc.Root.Elements("FACE");
                foreach (var item in items)
                {
                    var names = item.Elements("NAME");
                    var ages = item.Elements("Age");
                    var faces = item.Elements("FACE");
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 2010-11-12
      • 2013-05-12
      • 1970-01-01
      相关资源
      最近更新 更多