2017-01-11 1 views
0

私はC#Seleniumでオートメーションフレームワークを作成する方法を示す良いチュートリアルに従ってきました。 設定ファイルは現時点ではXMLで書かれていますが、もっと練習して.jsonファイルに変更したいと思っています。JSONにXMLオープナー(リーダー)を変更

現在、私たちは名前空間System.Xml.XPathを使用しています。私の質問は、JSONに似ているのでしょうか? "System.Json;と言うことができます私のXMLリーダーと同じように動作します。だから私は多くのコードをリファクタリングする必要はありませんか、それともやむを得ないことですか?

これは現時点での動作です。あなたはこの二行

XPathDocument document = new XPathDocument(stream); 
XPathNavigator navigator = document.CreateNavigator() 

そして、私はNugetから入手可能です Newtonsoft.Jsonを使用することをお勧めします XpathItem

乾杯

+1

私はJSON.NETについて次の答えが正しい解決策を指すことができると思います:http://stackoverflow.com/a/17788118/3531995 JSON.NETライブラリにストリームを渡すことはできますが、 '' aut = navigator.SelectSingleNode( "AutoFramework/RunSettings/AUT"); ''を更新する必要があります。これはXML固有のものです。 – thomasvdb

+0

@thomasvdb読み込みます! tnx – Dymond

答えて

1

を変更することができれば

//Initialize 
ConfigReader.SetFrameworkSettings(); 

public class ConfigReader 
{ 

     public static void SetFrameworkSettings() 
     { 
      XPathItem aut; 

      string strFilename = Environment.CurrentDirectory.ToString() + "\\Config\\GlobalConfig.xml"; 
      FileStream stream = new FileStream(strFilename, FileMode.Open); 
      XPathDocument document = new XPathDocument(stream); 
      XPathNavigator navigator = document.CreateNavigator(); 

      //Get XML Details and pass it in XPathItem type variables 
      aut = navigator.SelectSingleNode("AutoFramework/RunSettings/AUT"); 
      Settings.AUT = aut.Value.ToString(); 
     } 
    } 

public class Settings 
{ 
    public static string AUT { get; set; } 
} 

は素晴らしいだろう。私はこの JsonSerializationヘルパークラスを使用しているこれらのメソッドを使用するには

public static class SettingsConverter 
{ 
    public static string FromXmlToJson(string xml) 
    { 
     Settings settings = null; 
     // read your xml file and assign values to the settings object 
     // now you can "serialize" settings object into Json 
     return JsonSerialization.Serialize(settings); 
    } 

    public static string FromJsonToXml(string json) 
    { 
     Settings settings = JsonSerialization.Deserialize<MeSettings>(json); 
     // save settings using your "xml" serialization 
     return xmlString; // return xml string 
    } 
} 

public static class JsonSerialiation 
{ 
    public static string Serialize<T>(T obj) 
    { 
     using (MemoryStream stream = new MemoryStream()) 
     { 
      using (JsonTextWriter writer = new JsonTextWriter(new StreamWriter(stream)) 
      { 
       JsonSerializer serializer = new JsonSerializer(); 
       serializer.Serializer(writer, obj); 
       writer.Flush(); 
       stream.Position = 0; 
       using (StreamReader reader = new StreamREader(stream)) 
       { 
        return reader.ReadToEnd(); 
       } 
      } 
     } 
    } 

    public static T Deserialize<T>(string jsonString) 
    { 
     using (JsonTextReader reader = new JsonTextReader(new StringReader(str))) 
     { 
      JsonSerializer serializer = new JsonSerializer(); 
      return serializer.Deserialize<T>(reader) 
     } 
    } 
} 

上記の例では、あなたから必要とあなたには、いくつかの基本的なSettingsConverterが最初に確認する必要がありますあなたの現在のコードを「再利用」する インスタンスに

public class Settings 
{ 
    public static string AUT { get; set; } 
} 

:静的からあなたSettingsクラスを変更するには

public class Settings 
{ 
    public string AUT { get; set; } 
} 

静的であることが望ましい場合は、

JObject obj = JObject.Parse(jsonString); 
Settings.AUT = obj.SelectToken("AUT").Value<string>(); 

あなたはいつもの代わりにあなたが大きな問題あなたのコードの上に持っているより少ない制御私が作ったJsonSerializationヘルパークラスのが、私の意見ではJsonConvert.Serialize<T>()JsonConvert.Deserialize<T>()メソッドを使用することができます:あなたはNewtonsoft.JsonライブラリからJObjectを使用する必要がありますされます。

+0

ありがとうございました!良い説明に感謝します。私はこれを直接テストします – Dymond

関連する問題