2

C# プログラミングと XML は初めてです。文字列 (@ で始まり ' で終わる) を日付 (日付ピッカーから選択します) に変更したかったので、以下の XML ファイルをご覧ください。

<steps>
  <step1>drop table emp1 purge</step1> 
  <step2>create table emp1 as select e1.first_name ,e1.last_name ,e1.phone_number ,e1.salary     ,e1.hire_date from employees e1 where e1.hire_date between '@m_start_date' to '@m_end_date' group by e1.first_name ,e1.last_name ,e1.phone_number ,e1.salary ,e1.hire_date</step2> 
  <step3>select * from emp1</step3> 
</steps> 

上記の Xml コードで、@m_start_date を '01-sep-2012' に、@m_end_date を '30-sep-2012' に変更したかったのですが、最も重要な点は、文字列 @m_start_date と @m_end_date が修正されていないことです。 xml ファイル (つまり、@wk_start_dte と wk_end_dte である可能性があります) で、@ で始まり ' で終わる文字列を見つけて、この文字列を日付に置き換えることができるロジックが C# に必要です。

期待される結果は次のようになります

<steps>
  <step1>drop table emp1 purge</step1> 
  <step2>create table emp1 as select e1.first_name ,e1.last_name ,e1.phone_number ,e1.salary     ,e1.hire_date from employees e1 where e1.hire_date between '01-sep-2012' to '30-sep-2012' group by e1.first_name ,e1.last_name ,e1.phone_number ,e1.salary ,e1.hire_date</step2> 
  <step3>select * from emp1</step3> 
</steps>

このロジックを C# で取得する方法を教えてください。

4

2 に答える 2

0

テキストの置換に関するIvanの回答に加えて、ノードを見つけるために次のことを行う必要があります。

XmlDocument xDoc = new XmlDocument();
xDoc.Load("yourXml.XML");

XmlNode nodetoChange = xDoc.DocumentElement.SelectSingleNode("step2");

string xmlValue = nodetoChange.InnerText;

//Now apply Ivan's logic to replace text as you wish so that xmlValue new text
//then continue to save xml as shown below.

nodetoChange.InnterText = xmlValue;

xDoc.Save(); //In case you need to save it on hard-disk.
xDoc = null;

お役に立てば幸いです、ありがとうMilind

于 2012-10-08T05:28:00.653 に答える
0

XML が test という文字列にあるとします。

test = System.Text.RegularExpressions
             .Regex.Replace(test, "'[^']*start[^']*'", "'01-sep-2012'");

test = System.Text.RegularExpressions
             .Regex.Replace(test, "'[^']*end[^']*'", "'30-sep-2012'");
于 2012-10-07T14:12:43.673 に答える