1

xml ファイルの内部テキストに何かを書き込むにはどうすればよいですか

次のように、ファイルから特定のタグを読み取ることができます。

 protected void Page_Load(object sender, EventArgs e)
    {// this is to read from xml.
        if (!Page.IsPostBack)
        {
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(@"C:\configfolder\config.xml");

            XmlNodeList portNo = xmlDoc.GetElementsByTagName("AgentConfigRepository");
            foreach (XmlNode node in portNo)
            {
                XmlElement bookElement = (XmlElement)node;
                string no = bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText;
                TextBox1.Text = no;
            }
        }
    }

OVERRIDE_CONFIG_FILE_NAME の内部テキストの値を変更したい

これは私のxmlファイルがどのように見えるかです:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<AgentConfigRepository>
  <SERVER_SHARE_SW_DIR_NAME val="singleVal">AgentSW</SERVER_SHARE_SW_DIR_NAME>
  <OVERRIDE_CONFIG_FILE_NAME val="singleVal">override_config.xml</OVERRIDE_CONFIG_FILE_NAME>
  <MAINTAIN_AGENT_SW_LEVEL val="singleVal">1.0</MAINTAIN_AGENT_SW_LEVEL>
  <MAINTAIN_AGENT_SW_PATCH_LEVEL val="singleVal">0</MAINTAIN_AGENT_SW_PATCH_LEVEL>
</AgentConfigRepository>

だから私はoverride_config.xmlをテキストボックスの他の値に変更したい。

任意の提案..ありがとう

4

3 に答える 3

2

XDocument を使用できる場合は、かなり簡単になります。

XDocument xdoc = XDocument.Load(@"C:\configfolder\config.xml");
xdoc.Root.Element("OVERRIDE_CONFIG_FILE_NAME").SetValue("HelloThere");
xdoc.Save(@"C:\so2.xml");
于 2010-02-09T21:45:01.610 に答える
1

他のプロパティと同じように InnerText を設定できます(Tim Cが言ったように)

ただし、これを行うと、XmlDocument オブジェクトにのみ設定されます。ファイルの変更を確認するには、変更をファイルに保存する必要があります。

bookElement.save(ファイル名)

于 2010-08-24T12:45:37.190 に答える
1

残念ながら、これは現時点ではテストされていません(私はそれをテストする場所にいません)が、質問の外観から、この行で見つけた Element の innerText を変更しようとしています:

bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText;

テキストボックスにあるものは何でも。通常、次のようなステートメントが必要です。

bookElement.GetElementsByTagName("OVERRIDE_CONFIG_FILE_NAME")[0].InnerText = "new text"

New Text は、アプリ内のテキスト ボックスまたは別の変数の文字列にするか、ハードコードするだけです (この例のように)。お役に立てれば。

于 2010-02-09T21:48:31.410 に答える