2010-02-09 9 views
1

Comment puis-je écrire quelque chose dans le InnerText de mon fichier xmlInnerText d'écriture dans le fichier xml

je suis capable de lire l'étiquette particualar du fichier comme ceci:

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

Maintenant, je veux changer la valeur du InnerText de OVERRIDE_CONFIG_FILE_NAME

c'est ainsi que mon fichier xml ressemble:

<?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> 

donc je veux changer override_config.xml à une autre valeur dans la zone de texte.

suggestions .. merci

Répondre

2

Si vous pouvez utiliser XDocument, il devient assez trivial:

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

Malheureusement, ce n'est pas testé au moment (je ne suis pas dans un endroit pour le tester) mais de l'aspect de votre question que vous essayez de changer la innerText de l'élément que vous avez trouvé dans cette ligne:

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

pour tout ce qui est dans votre zone de texte. En général, vous voulez une déclaration comme ceci:

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

Nouveau texte peut être la chaîne à partir d'une zone de texte dans votre application ou une autre variable ou juste hardcoded (comme dans cet exemple). J'espère que cela t'aides.

+0

j'avais essayé auparavant, mais il ne travaille pas seul comme ça .. . Merci quand même – user175084

1

Vous pouvez simplement définir la InnerText comme toute autre propriété (comme Tim C a)

Lorsque vous faites cela, cependant, il ne définit que dans l'objet XmlDocument. Pour voir le changement dans le fichier, vous devez faire enregistrer les modifications dans le fichier:

bookElement.save (nom de fichier)