2010-02-09 2 views
1

Как я пишу что-то в InnerText моего файла XMLзаписи InnerText в XML-файле

я могу прочитать particualar тег из файла, как это:

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; 
      } 
     } 
    } 

Теперь я хочу, чтобы изменить значение в InnerText из 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 на другое значение в текстовом поле.

любые предложения .. спасибо

ответ

2

Если вы можете использовать XDocument, он становится довольно тривиальным:

XDocument xdoc = XDocument.Load(@"C:\configfolder\config.xml"); 
xdoc.Root.Element("OVERRIDE_CONFIG_FILE_NAME").SetValue("HelloThere"); 
xdoc.Save(@"C:\so2.xml"); 
1

К сожалению, это не тестировалась на данный момент (я не в месте, чтобы проверить его), но судя по вашему вопросу, который вы пытаетесь изменить InnerText элемента вы нашли в этой строке:

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

чтобы все, что в текстовом поле. Как правило, вы хотите заявление, как это:

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

Новый текст может быть строкой из текстового поля в вашем приложении или другой переменной или просто жёстко (как в данном примере). Надеюсь это поможет.

+0

я пытался это раньше, но он не работает в одиночку, как это .. . Спасибо хоть – user175084

1

Вы можете просто установить InnerText, как и любой другой собственности (Как сказал Тим C)

Когда вы сделаете это, тем не менее, она только устанавливает его в объект XmlDocument. Для того, чтобы увидеть изменения в файле, вам нужно сделать, сохранить изменения обратно в файл:

bookElement.save (имя файла)