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

假设您的 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 回答
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 回答