I have some XML files that can contain nodes <disp-formula id="deqn*">
, and each of these nodes has a line in it with a name \tag
. Now the number of keywords \tag
can be one or more in each node <disp-formula id="deqn*">
.
I want to generate an attribute value id
starting at 1, and then increment to +1 for each found <disp-formula id="deqn*">
using \tag
count.
Sample data:
<disp-formula id="deqn*">...\tag...</disp-formula>
<disp-formula id="deqn*">...\tag...\tag...\tag ...</disp-formula>
<disp-formula id="deqn*">...\tag ...</disp-formula>
<disp-formula id="deqn*">...\tag...\tag ...</disp-formula>
Expected Modification:
<disp-formula id="deqn1">...\tag...</disp-formula>
<disp-formula id="deqn2-4">...\tag...\tag...\tag ...</disp-formula>
<disp-formula id="deqn5">...\tag ...</disp-formula>
<disp-formula id="deqn6-7">...\tag...\tag ...</disp-formula>
To generate numbers for a specific line, I mainly use the following process:
string inputText = File.ReadAllText(@"C:\temp\sample.xml");
string findText = @"*";
int matchCount = inputText.Split(findText.ToCharArray()).Length - 1;
if (matchCount > 0)
{
for (int counter = 1; counter <= matchCount; counter++)
{
var regex = new Regex(Regex.Escape(findText));
inputText = regex.Replace(inputText, counter.ToString(), 1);
}
}
, \tag
LINQ2XML ?
- ?