2016-04-26 7 views
0

私はこの質問を見つけましたが、それは私のN ++でうまくいきます...しかし、私は私のアプリからN ++にコピーしてから私のアプリに戻すのに十分速くないように感じます。 例:VB/C#番号の追加による検索と置換?

<DatasetUnit x="2" y="0" ID="18" /> 
<DatasetUnit x="4" y="0" ID="5" /> 
<DatasetUnit x="3" y="0" ID="10" /> 
<DatasetUnit x="5" y="0" ID="30" /> 
<DatasetUnit x="1" y="0" ID="33" /> 
<DatasetUnit x="10" y="0" ID="1" /> 

そして、私は45によるX値の増加は、それがあるべきことを望む:

<DatasetUnit x="47" y="0" ID="18" /> 
<DatasetUnit x="49" y="0" ID="5" /> 
<DatasetUnit x="48" y="0" ID="10" /> 
<DatasetUnit x="50" y="0" ID="30" /> 
<DatasetUnit x="46" y="0" ID="33" /> 
<DatasetUnit x="55" y="0" ID="1" /> 

は、このは、C#/ VB上で行うことができていますか?しかし、私はVB上で書かれているので、私はVBの方が好きです。 Btw、私はthisを見つけましたが、N ++のpythonと似ていますが、どのように使用するのかは分かりません。

編集:私はすべての要素が増加しますが、私は、例えば、あなたがXMLとしてそれを解析する必要があり、そのXMLとして(私はtextbox1.selectedtextから入手可能)

+0

はあなたを持っています正規表現を使ってやってみた? – RononDex

+0

あなたの入力は有効なXMLですか? –

+0

@RononDex yeahと[this](https://msdn.microsoft.com/en-us/library/ms149475(v = vs.110).aspx)を使用する方法、_; – Smankusors

答えて

2

を選択したテキストだけはありませんご意見を踏まえて

var doc = XDocument.Load(@"c:\x.xml"); 

foreach (var el in doc.Descendants("DatasetUnit")) 
{ 
    var x = el.Attribute("x"); 
    x.Value = (int.Parse(x.Value) + 45).ToString(); 
} 

doc.Save(@"c:\x2.xml"); 

、あなたは単にあなたができるストリーム/ライターを必要としない:

Dim doc = XDocument.Parse(TextBox1.Text) 
For Each el In doc.Descendants("DatasetUnit") 
Dim x = el.Attribute("x") 
    x.Value = (Integer.Parse(x.Value) + 45).ToString() 
Next 
TextBox1.Text = doc.ToString 

(あなたがxmlStream.Position = 0をリセットしていなかったので、あなたのコードは、おそらく失敗した)

+0

エラーを返します。ルート要素がありません。 XDocumentを直接ストリームから読み込み、ファイルからロードしないでください – Smankusors

+1

ルート要素が見つからないということは、XMLが正しく形成されていないか正しくロードされていないことを意味します。 –

+0

[コード](http://smankusors.16mb.com/private/smallcode.txt)と[XML](http://smankusors.16mb.com/private/dataset.xml)。私は "変更のみ"のコメントの後に要素を増やしたい – Smankusors