C# 捕获由特定xml标记包围的所有点

C# 捕获由特定xml标记包围的所有点,c#,xml,C#,Xml,我有一些XML数据需要重新格式化,因为它给了我一个带点的时钟,我想用:代替这些点。 但我只想在“FromTime”到“/ToTime”之间进行,因为它可以在xml中的其他位置有效 <PresenceData> <Presence> <Date>2020-01-19</Date> <FromTime>15.00.00</FromTime> <ToTime>22

我有一些XML数据需要重新格式化,因为它给了我一个带点的时钟,我想用:代替这些点。 但我只想在“FromTime”到“/ToTime”之间进行,因为它可以在xml中的其他位置有效

<PresenceData>
    <Presence>
        <Date>2020-01-19</Date>
        <FromTime>15.00.00</FromTime>
        <ToTime>22.15.00</ToTime>
        <Description>Sunny day.</Description>
    </Presence>
    <Presence>
        <Date>2020-01-28</Date>
        <FromTime>15.00.00</FromTime>
        <ToTime>22.15.00</ToTime>
        <Description>bla bla bla.. bla.</Description>
    </Presence>
</PresenceData>

2020-01-19
15.00.00
22.15.00
阳光明媚的一天。
2020-01-28
15.00.00
22.15.00
呜呜呜呜。。布拉。
正则表达式是这里的方法吗?

您可以使用。获取该节点的值,并将
替换为

var xmlDoc = new XmlDocument();
var projectPath = "Path to your xml file";
xmlDoc.Load(projectPath);

var fromNode = xmlDoc.SelectSingleNode("//Presence/FromTime");
if (fromNode != null && !string.IsNullOrEmpty(fromNode.InnerText))
{
    fromNode.InnerText = fromNode.InnerText.Replace(".", ":");
}

var toNode = xmlDoc.SelectSingleNode("//Presence/ToTime");
if (toNode != null && !string.IsNullOrEmpty(toNode.InnerText))
{
    toNode.InnerText = toNode.InnerText.Replace(".", ":");
}

xmlDoc.Save(projectPath);

您可以使用xml解析器。对于第一个元素(SelectSingleNode),这非常有效——因此只需要一种方法来迭代所有元素。看起来使用xmlDoc.SelectNodes和for循环fromNodes/toNodes是有效的!非常感谢!