1

次の形式のxmlファイルがあります。

 <?xml version="1.0" encoding="utf-8"?>
    <server xmlns="urn:jboss:domain:1.2">
  <extensions>
    <extension module="org.jboss.as.clustering.infinispan" />
    <extension module="org.jboss.as.cmp" />
    <extension module="org.jboss.as.ejb3" />
  </extensions>
    <appSettings>
      <property name="EXTERNAL_FILESERVER" value="/site/bugbase.adobe.com/files/" />
      <property name="FTP_USER" value="password" />
      <property name="FTP_SERVER" value="sjshare.corp.adobe.com"/>
      <property name="FTP_PASSWORD" value="password" />
      <property name="FTP_READ_USER" value="password" />
      <property name="FTP_READ_PASS" value="password" />
      <property name="WORKFLOW_NOTIFICATION_TEMPLATE" value="util/workflow_notification_template.html"/>
    </appSettings>
</server>

「FTP_USER」と「FTP_READ_USER」のパスワード値を変更したかったのです。

これまでに試したコード:

XmlDocument doc = new XmlDocument();
            string path = @"C:\Users\karansha\Desktop\config file 1.xml";
            doc.Load(path);
            doc.SelectNodes("/appSettings/property").Item(1).Attributes["value"].Value = "newpassword";
            doc.SelectNodes("/appSettings/property").Item(2).Attributes["value"].Value = "new_password";
4

4 に答える 4

2

パスワードを変更するコードは次のとおりです。

XDocument xDoc = XDocument.Load("C:\\test.xml");
    if (xDoc != null)
    {
        IEnumerable<XElement> xEle = xDoc.XPathSelectElements("//property");
        if (xEle != null)
        {
           foreach (XElement xE in xEle)
            {
                if (xE.Attribute("name") != null)
                {
                   if(xE.Attribute("value") !=null)
                    {
                    if(string.compare(xE.Attribute("name").Value,"FTP_USER",true) ==0)
                       xE.Attribute("value").Value = "your new password"
                    if(string.compare(xE.Attribute("name").Value,"FTP_READ_USER",true) ==0)
                       xE.Attribute("value").Value = "your new password"

                     }

                }
            }
            xDoc.Save("C:\\test.xml");
        }
    }
于 2013-08-09T03:57:22.510 に答える
1

これがあなたの答えです

XDocument xDoc = XDocument.Load("C:\\test.xml");
        if (xDoc != null)
        {
            IEnumerable<XElement> xEle = xDoc.XPathSelectElements("//property");
            if (xEle != null)
            {
                int iPass = 0;
                foreach (XElement xE in xEle)
                {
                    if (xE.Attribute("value") != null)
                    {
                        xE.Attribute("value").Value = "password" + iPass;
                        iPass++;
                    }
                }
                xDoc.Save("C:\\test.xml");
            }
        }
于 2013-08-07T12:09:50.160 に答える
1

する代わりに

doc.SelectNodes("/appSettings/property").Item(1).Attributes["value"].Value = "password1";

foreachループを使う

XmlDocument doc = new XmlDocument();
string path = @"C:\Users\karansha\Desktop\config file 1.xml";
doc.Load(path);

foreach (XmlNode selectNode in doc.SelectNodes("/appSettings/property"))
{
    if(selectNode.Attributes["name"].Value.equals("FTP_USER") ||
       selectNode.Attributes["name"].Value.equals("FTP_READ_USER"))
    {
        selectNode.Attributes["value"].Value = "new_password";
    }
}

doc.Save(path); 

2 つの異なるパスワードが必要な場合

    if(selectNode.Attributes["name"].Value.equals("FTP_USER"))
    {
        selectNode.Attributes["value"].Value = "new_password";
    }

    if(selectNode.Attributes["name"].Value.equals("FTP_READ_USER"))
    {
        selectNode.Attributes["value"].Value = "newPassword";
    }
于 2013-08-07T11:53:07.023 に答える