Редактировать XML-документ всякий раз, когда есть ввод для его изменения

public void ModifyXML(string inputAsset, string test, string version)
    {
      File.Create(Constants.XMLDoc).Close();
      XmlReader xReader = XmlReader.Create(xmlDoc);
      while (!xReader.EOF)
      {
        if (xReader.Name != "Asset")
        {
          xReader.ReadToFollowing("Asset");
        }

        //If we have not reached the end of the file
        if (!xReader.EOF)
        {
          XElement asset = (XElement)XElement.ReadFrom(xReader);
          string branchName = (string)asset.Attribute("Name");

          if (branchName == inputAsset)
          {

          }

        }
      }
    }

Привет, ребята, сейчас я пытаюсь отредактировать XML-документ, когда мои входные данные не равны нулю в моем файле main. Мой XML выглядит так:

<Properties>
 <Assets>

 <Asset Name="" Version="">
  <TestCase Name="" Version="" SubVersion="" /> 
  <TestCase Name="" Version="" SubVersion="" /> 
  <TestCase Name="" Version="" SubVersion="" /> 
  <TestCase Name="" Version="" SubVersion="" />  
  </Asset>

<Asset Name="" Version="">
  <TestCase Name="" Version="" SubVersion="" /> 
  <TestCase Name="" Version="" SubVersion="" /> 
  <TestCase Name="" Version="" SubVersion="" /> 
  <TestCase Name="" Version="" SubVersion="" />  
  </Asset>
</Assets>
</Properties>

Таким образом, возможны виды редактирования, такие как изменения текущего тестового примера, например, значения версии, подверсии или имени, или даже добавление нового тестового примера к активу или добавление совершенно нового актива, если это необходимо. Как бы я это сделал?


person PhillipsJP    schedule 20.06.2016    source источник


Ответы (1)


Используйте код, который я разместил в предыдущем сообщении. Насколько велик ваш ввод xml? Ответ для маленького xml будет отличаться от ответа для большого xml. Какие исходные данные вы планируете использовать для модификаций.

public void ConvertToDirectoryTree()
        {
            XmlReader xReader = XmlReader.Create(xmlDoc);

            while (!xReader.EOF)
            {
                if (xReader.Name != "Asset")
                {
                    xReader.ReadToFollowing("Asset");
                }

                if (!xReader.EOF)
                {
                    XElement asset = (XElement)XElement.ReadFrom(xReader);
                    foreach (XElement testCase in asset.Elements("TestCase"))
                    {

                        //We check if the asset is a main branch folder
                        if (IsMainBranch((string)asset.Attribute("Name") + (string)asset.Attribute("Version")))
                        {
                            //If the folder exists already then add it inside this folder
                            if (Directory.Exists(root + (string)asset.Attribute("Name")))
                            {
                               Directory.CreateDirectory(root + (string)asset.Attribute("Name") + "\\" + (string)testCase.Attribute("Version") + (string)testCase.Attribute("SubVersion"));
                            }
                            //Else we need to create the folder and then add it inside this folder
                            else
                            {
                                Directory.CreateDirectory(root + (string)asset.Attribute("Name"));
                                Directory.CreateDirectory(root + (string)asset.Attribute("Name") + "\\" + (string)testCase.Attribute("Version") + (string)testCase.Attribute("SubVersion"));
                            }
                        }
                        //If it is not a main branch folder then we need to handle the name differently
                        else
                        {
                            //If the folder exists already then add it inside this folder
                            if (Directory.Exists(root + (string)asset.Attribute("Name") + "-" + (string)asset.Attribute("Version")))
                            {
                                Directory.CreateDirectory(root + (string)asset.Attribute("Name") + "-" + (string)asset.Attribute("Version") + "\\" + (string)testCase.Attribute("Version") + (string)testCase.Attribute("SubVersion"));
                            }
                            //Else we need to create the folder and then add it inside this folder
                            else
                            {
                                Directory.CreateDirectory(root + (string)asset.Attribute("Name") + "-" + ((string)asset.Attribute("Version")).Replace(".", "_"));
                                Directory.CreateDirectory(root + (string)asset.Attribute("Name") + "-" + (string)asset.Attribute("Version") + "\\" + (string)testCase.Attribute("Version") + (string)testCase.Attribute("SubVersion"));
                            }

                        }
                    }
                }
            }
        }
person jdweng    schedule 20.06.2016
comment
хорошо, я действительно не понимаю, почему вы используете старую функцию converttodirectorytree, это не та же проблема, что и раньше. Я закончил последний выпуск благодаря вашей потрясающей помощи, это совершенно другое. Вроде, как бы, что-то вроде. Это проблема перед последней, когда тот же файл XML я буду использовать позже для последней проблемы. Если пользователь хочет внести в него изменения, нам нужно иметь возможность редактировать его из командной строки. Я сделал свою функцию editxml, которая будет только использоваться, если есть вход, который не равен нулю. так что мне не нужно создавать каталоги?? Я понятия не имею, почему ты пишешь каталоги, лол - person PhillipsJP; 20.06.2016
comment
более того, я должен проверить, существуют ли текущий aseet и версии, редактируют ли они его и не добавляют ли они его. - person PhillipsJP; 20.06.2016