2017-02-28 1 views
1


私はいくつかのマップOUTSIDEプログラムで変数のリストを自動的に取得しようとしています。私はプロセスファイルでそれらを見つけることができ、XML構造を持っていることを知っています。
変数を持つ "x:object"には、 "MboField}"で終わる "x:Type"が含まれていることもわかりました。
残念ながら、私はまだ他のオブジェクトから変数を分離するためにメインのpaternを見つけることができないので、より多くの検索基準を絞り込む必要があります。他の人の間で変数を見つけるために、任意の他の方法BPM Metastormでマップの変数のリストを取得する

  var xdoc = XDocument.Load(patches.ProcessFilePatch); 
     var xmlns = XNamespace.Get("http://schema.metastorm.com/Metastorm.Common.Markup"); 

     IEnumerable<string> values = from x in xdoc.Descendants(xmlns+"Object") 
            where x.Attribute(xmlns+"Type").Value.ToString().EndsWith("MboField}") 
            select x.Attribute(xmlns+"Name").Value.ToString(); 

     VariablesInProcessFile = values.ToList(); 


これは、C#で私の現在のコードですか?

答えて

0
private void getVariablesInProcessFile() 
    { 
     var xdoc = XDocument.Load(patches.ProcessFilePatch); 
     var xmlns = XNamespace.Get("http://schema.metastorm.com/Metastorm.Common.Markup"); 

     var dane = xdoc.Descendants(xmlns + "Object").Where(x => CheckAttributes(x, xmlns)).ToArray(); 

     IEnumerable<string> valuesE = from x in dane.Descendants(xmlns + "Object") 
             where x.Attribute(xmlns + "Type").Value.ToString().EndsWith("MboField}") 
             select x.Attribute(xmlns + "Name").Value.ToString(); 

     VariablesInProcessFile = valuesE.ToList(); 
    } 

    private bool CheckAttributes(XElement x, XNamespace xmlns) 
    { 
     var wynik = x.Attribute(xmlns + "Name"); 

     return wynik != null && (wynik.Value == patches.MapName + "Data" || wynik.Value == patches.altMapName + "Data"); 
    } 

ここで、 "patches"は.processファイルへのパッチと変数のグループ名の可能な名前です(通常はマップの名前に関連します)。

関連する問題