Reputation: 129
I have a string that is in XML
format my string is:
<Commits>
<Repository></Repository>
<Commit>
<Author>[email protected]</Author>
<Commit_Date>2021-06-04 10:55:27 +0530</Commit_Date>
<Message_Body>Multiple files</Message_Body>
<PreviousCommit_Id></PreviousCommit_Id>
<Commit_Id>8ca4c0612ed785ba200a77763dca68c473f4af17</Commit_Id>
<Branch_Name>HEAD -> master, origin/master</Branch_Name>
<Files_List></Files_List>
</Commit>
</Commits>
I want to insert this string into an XML
file that I have already created. How can I do that?
I have another scenario
I have string variable string gitEventXml it contains
<Commits>
<Repository></Repository>
<Commit>
<Author>[email protected]</Author>
<Commit_Date>2021-06-04 10:55:27 +0530</Commit_Date>
<Message_Body>Multiple files</Message_Body>
<PreviousCommit_Id></PreviousCommit_Id>
<Commit_Id>8ca4c0612ed785ba200a77763dca68c473f4af17</Commit_Id>
<Branch_Name>HEAD -> master, origin/master</Branch_Name>
<Files_List></Files_List>
</Commit>
</Commits>
This as string. In the Repository tag I want to insert .git. The string will look like
<Commits><Repository>.git</Repository>....
How can I achieve it? Can anyone help me with this?
Upvotes: 1
Views: 73
Reputation: 148
I think this will be more efficient for the second scenario.
XElement eventXml = XElement.Parse(gitEventXml);
string repo = ".git";
XElement tagXmlToInsert = XElement.Parse($"<Repository>{repo}</Repository>");
XElement mainElement = eventXml.Descendants("Commit").FirstOrDefault();
XElement mainElement.AddBeforeSelf(tagXmlToInsert);
Upvotes: 1
Reputation: 665
Solution of first problem:
string gitEventXml = @"<Commits><Repository></Repository><Commit><Author>[email protected]</Author><Commit_Date>2021-06-04 10:55:27 +0530</Commit_Date><Message_Body>Multiple files</Message_Body><PriviousCommit_Id></PriviousCommit_Id><Commit_Id>8ca4c0612ed785ba200a77763dca68c473f4af17</Commit_Id><Branch_Name>HEAD -> master, origin/master</Branch_Name><Files_List></Files_List></Commit></Commits>";
File.WriteAllText("D:/MyXmlFile.xml", gitEventXml);
Solution for second:
string insertValue = ".git";
string gitEventXml = $"<Commits><Repository>{insertValue}</Repository><Commit><Author>[email protected]</Author><Commit_Date>2021-06-04 10:55:27 +0530</Commit_Date><Message_Body>Multiple files</Message_Body><PriviousCommit_Id></PriviousCommit_Id><Commit_Id>8ca4c0612ed785ba200a77763dca68c473f4af17</Commit_Id><Branch_Name>HEAD -> master, origin/master</Branch_Name><Files_List></Files_List></Commit></Commits>";
File.WriteAllText("D:/MyXmlFile.xml", gitEventXml);
Another dynamic way to insert value:
string insertValue = ".git";
string gitEventXml = $"<Commits><Repository></Repository><Commit><Author>[email protected]</Author><Commit_Date>2021-06-04 10:55:27 +0530</Commit_Date><Message_Body>Multiple files</Message_Body><PriviousCommit_Id></PriviousCommit_Id><Commit_Id>8ca4c0612ed785ba200a77763dca68c473f4af17</Commit_Id><Branch_Name>HEAD -> master, origin/master</Branch_Name><Files_List></Files_List></Commit></Commits>";
if (gitEventXml.Contains("<Repository>"))
{
string[] parts = gitEventXml.Split("<Repository>");
gitEventXml = $"{parts[0]}<Repository>{insertValue}{parts[1]}";
}
File.WriteAllText("D:/MyXmlFile.xml", gitEventXml);
Upvotes: 1