2017-01-09 5 views
0

を使用して変更する方法 'Hierarchy_RestrictedOperations'のxml属性値をTRUEにFALSEに変更する必要があります。 ここでは、XMLはxmlの属性タイプ<TRUE/FALSE>をc#

<BusinessRules> 
    <BusinessRule> 
     <Type>All_NoEmptyRequiredProperty</Type> 
     <Enabled ptype="BOOLEAN">TRUE</Enabled> 
    </BusinessRule> 
    <BusinessRule> 
     <Type>All_CheckStringLength</Type> 
     <Enabled ptype="BOOLEAN">TRUE</Enabled> 
    </BusinessRule> 
    <BusinessRule> 
<BusinessRule> 
    <Type>Hierarchy_RestrictedOperations</Type> 
    <Enabled ptype="BOOLEAN">TRUE</Enabled> 
</BusinessRule> 
<BusinessRule> 
    <Type>ProdOff_AllowAccountPOCurrencyMismatch</Type> 
    <Enabled ptype="BOOLEAN">FALSE</Enabled> 
</BusinessRule> 
<!-- Following business rule was added for FEAT-147 --> 
<BusinessRule> 
    <Type>ProdOff_AllowMultiplePISubscriptionRCNRC</Type> 
    <Enabled ptype="BOOLEAN">FALSE</Enabled> 
</BusinessRule> 
<!-- Following business rule was added for CORE-10776 --> 
<BusinessRule> 
    <Type>ImmediateSubscriptionTermination</Type> 
    <Enabled ptype="BOOLEAN">FALSE</Enabled> 
</BusinessRule> 

のように見える誰もあなたがそれをこの

XDocument xdc = XDocument.Load(YourXMLFile); 
xdc.Descendants("BusinessRule") 
    .LastOrDefault() 
    .Descendants("Enabled") 
    .FirstOrDefault() 
    .Value = "False"; 
xdc.Save(YourXMLFile); 

ような何かを行うことができ、私はコード

 XmlDocument xml = new XmlDocument(); 
    xml.Load("R:\\config\\ProductCatalog\\PCConfig.xml"); 


    XmlNodeList nodes = xml.SelectNodes("//BusinessRule"); 
    //XmlNodeList type = xml.SelectNodes("//Hierarchy_RestrictedOperations"); 
    foreach (XmlElement element in nodes) 
    { 

     element.SelectSingleNode("Type").InnerText = "Hierarchy_RestrictedOperations"; 

    } 
    xml.Save("R:\\config\\ProductCatalog\\PCConfig.xml"); 

答えて

0

の下にしようとしたC#を使用して私を助けることができますまたは

XDocument xdc = XDocument.Load(YourXMLFile);  
xdc.Descendants("BusinessRule") 
    .Where(x => x.Descendants("Type") 
       .FirstOrDefault() 
       .Value == "Hierarchy_RestrictedOperations" 
     ) 
    .Descendants("Enabled") 
    .FirstOrDefault() 
    .Value = "False"; 
+0

Where条件に誤りがあります。 には、 'where'の定義が含まれておらず、拡張メソッド 'Where'は型の最初の引数を受け入れません。 – Vickky

+0

には、 'where'の定義と、 'where'という型の最初の引数を受け入れる拡張メソッドが含まれていません。 – Vickky

+0

csファイルの先頭に 'System.Linqを使って '名前空間を追加する必要があると思います。 –

0

このお試しください:

XElement element = xml.Root.Elements("BusinessRule").Where(xElement => xElement.Element("Type").Value == "Hierarchy_RestrictedOperations").FirstOrDefault(); 

     if(element != null) 
     { 
      element.Element("Enabled").Value = "FALSE"; 
     } 

     xml.Save("R:\\config\\ProductCatalog\\PCConfig.xml"); 

は、XMLファイルのタグがすべて正しいことを確認してください。 これは役に立ちました。

+0

Where条件にエラーが発生しています。 には、 'where'の定義が含まれておらず、拡張メソッド 'Where'は型の最初の引数を受け入れません。 – Vickky

+0

"using System.Linq;"を追加します。 –

+0

System.Xml.XPathを使用して両方を追加しました。 using System.Xml.Linq; – Vickky