0

こんにちは、いくつかの行をxmlファイルに挿入して保存する必要がありますか?

xmlファイルは

<?xml version="1.0" encoding="utf-8"?>
<Dashboard CurrencyCulture="en-US">
  <Title Text="Dashboard" />
  <DataConnections>
    <DataConnection Name="Database1Connection" ProviderKey="Access2007" ConnectionString="XpoProvider=MSAccess;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Share Deny None;data source=D:\Sina\Desktop\Omid\Database1.accdb;Jet OLEDB:Database Password=;">
      <Parameters>
        <Parameter Name="database" Value="D:\Sina\Desktop\Omid\Database1.accdb" />
        <Parameter Name="read only" Value="1" />
        <Parameter Name="generateConnectionHelper" Value="false" />
      </Parameters>
    </DataConnection>
  </DataConnections>
  <DataSources>
    <DataSource Name="Data Source 1">
      <DataProvider DataConnection="Database1Connection" SupportSql="true" />
    </DataSource>
    <DataSource Name="Query 2" />
  </DataSources>

これらの行を挿入する必要があります

    <Selection>
      <Table Name="Query2">
        <Columns>
          <Column Name="PName" />
          <Column Name="Prog" />
          <Column Name="RDate" />
        </Columns>
      </Table>
    </Selection>

の間に

      <DataProvider DataConnection="Database1Connection" SupportSql="true">
.
.(here)
      </DataProvider> 
4

3 に答える 3

2

入力として提供されたファイルを受け取り、ノードが追加された新しいファイルを構築する完全なコンソール アプリケーションを次に示します。

注:これは非常に静的であるため、明らかにコードをより動的にする必要があります。たとえば、Column別のリストとループの可能性が高い要素を構築します。

class Program
{
    static void Main(string[] args)
    {
        var doc = XDocument.Load("XMLFile1.xml");

        var selection = new XElement("Selection");

        var table = new XElement("Table");
        table.Add(new XAttribute("Name", "Query2"));

        var columns = new XElement("Columns");

        var column = new XElement("Column");
        column.Add(new XAttribute("Name", "PName"));
        columns.Add(column);

        column = new XElement("Column");
        column.Add(new XAttribute("Name", "Prog"));
        columns.Add(column);

        column = new XElement("Column");
        column.Add(new XAttribute("Name", "RDate"));
        columns.Add(column);

        table.Add(columns);

        selection.Add(table);

        var dataProvider = doc.Root.Descendants("DataProvider").First();
        dataProvider.Add(selection);

        doc.Save("XMLFile2.xml");
    }
}

新しいファイルの出力は次のようになります。

  <DataSources>
    <DataSource Name="Data Source 1">
      <DataProvider DataConnection="Database1Connection" SupportSql="true">
        <Selection>
          <Table Name="Query2">
            <Columns>
              <Column Name="PName" />
              <Column Name="Prog" />
              <Column Name="RDate" />
            </Columns>
          </Table>
        </Selection>
      </DataProvider>
    </DataSource>
    <DataSource Name="Query 2" />
  </DataSources>
于 2013-10-14T12:59:50.520 に答える
0

これを試して、

 XmlDocument document = new XmlDocument();
document.Load(filename);
XmlElement childElement = document.CreateElement("child");
XmlNode parentNode = document.SelectSingleNode("root/firstLevel/parent");
parentNode.AppendChild(childElement);
于 2013-10-14T12:59:39.580 に答える
0

簡単なアプローチは次のとおりです。

    string file = "XMLFile1.xml";
    string text = File.ReadAllText(file);
    text = text.Replace("<DataProvider DataConnection=\"Database1Connection\" SupportSql=\"true\" />",
        "<DataProvider DataConnection=\"Database1Connection\" SupportSql=\"true\">" +
        "<Selection>" +
         "<Table Name=\"Query2\">" +
         "<Columns>" +
         " <Column Name=\"PName\" />" +
          "<Column Name=\"Prog\" />" +
          "<Column Name=\"RDate\" />" +
         "</Columns>" +
         "</Table>" +
         "</Selection>" +
        "</DataProvider> ");
    File.WriteAllText(file, text);
于 2013-10-14T13:12:01.023 に答える