C# “如何替换”\&引用;及\\&引用;仅针对XML中的特定标记?

C# “如何替换”\&引用;及\\&引用;仅针对XML中的特定标记?,c#,C#,我正在尝试匹配XML中的Location标记,并将XML内容中的“\”替换为“\\”,仅用于位置标记,有人能提供如何操作的指导吗 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace Matchlocationreplace

我正在尝试匹配XML中的
Location
标记,并将XML内容中的“\”替换为“\\”,仅用于位置标记,有人能提供如何操作的指导吗

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace Matchlocationreplacebackslash
{
    class Program
    {
        static void Main(string[] args)
        {
            string pattern = "<Location>(.*?)</Location>";
            string xmlcontent = @"<SoftwareProductBuild>
                        <BuildSource>QCA_DEV_POSTCOMMIT</BuildSource>
                        <BuiltBy>wbibot</BuiltBy>
                        <CreatedBy>wbibot</CreatedBy>
                        <Name>BTFM.CHE.2.1.2-00091-QCACHROM-1_NO_VARIANT</Name>
                        <Status>Approved</Status>
                        <BuiltOn>2017-08-28T13:00:04.345Z</BuiltOn>
                        <Tag>BTFM.CHE.2.1.2_BTFM.CHE.2.1.2-00091-QCACHROM-1_2017-08-28T13:00:04.345Z</Tag>
                        <SoftwareImageBuilds>
                            <SoftwareImageBuild>
                                <Type>LA</Type>
                                <Name>BTFM.CHE.2.1.2-00091-QCACHROM-1_NO_VARIANT</Name>
                                <Location>\\snowcone\builds676\INTEGRATION\BTFM.CHE.2.1.2-00091-QCACHROM-1</Location>
                                <Variant>NO_VARIANT</Variant>
                                <LoadType>Direct</LoadType>
                                <Target>NO_VARIANT</Target>
                                <SoftwareImages>
                                    <SoftwareImage>
                                        <Name>BTFM.CHE.2.1.2</Name>
                                        <SoftwareProducts>
                                            <SoftwareProduct>
                                                <Name>MSM8998.LA.1.9</Name>
                                                <BaseMeta>CI_MSM8998.LA.1.9-16991-INT-2</BaseMeta>
                                            </SoftwareProduct>
                                        </SoftwareProducts>
                                    </SoftwareImage>
                                </SoftwareImages>
                            </SoftwareImageBuild>
                        </SoftwareImageBuilds>
                    </SoftwareProductBuild>";
            Match match = Regex.Match(xmlcontent, pattern); //Match location
            //Replace "\" with  "\\" in the xml content with the match
            Console.ReadLine();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Text.RegularExpressions;
使用System.Threading.Tasks;
命名空间匹配位置替换反斜杠
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串模式=“(.*?”;
字符串xmlcontent=@”
QCA_DEV_POSTCOMMIT
wbibot
wbibot
BTFM.CHE.2.1.2-00091-QCACHROM-1无变体
经核准的
2017-08-28813:00:04.345Z
BTFM.CHE.2.1.2_BTFM.CHE.2.1.2-00091-QCACHROM-1_2017-08-28813:00:04.345Z
洛杉矶
BTFM.CHE.2.1.2-00091-QCACHROM-1无变体
\\snowcone\builds676\INTEGRATION\BTFM.CHE.2.1.2-00091-QCACHROM-1
无变异
直接的
无变异
BTFM.CHE.2.1.2
MSM8998.LA.1.9
CI_MSM8998.LA.1.9-16991-INT-2
";
Match Match=Regex.Match(xmlcontent,pattern);//匹配位置
//将xml内容中的“\”替换为“\ \”并使用匹配项
Console.ReadLine();
}
}
}

您不需要正则表达式。使用xml解析器,如

附言:一篇很好的文章

您可以使用以下代码:

var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlcontent);
var locations = xmlDoc.GetElementsByTagName("Location");
foreach (XmlNode location in locations)
{
    var newLocation = location.InnerText.Replace("\\", "\\\\");
    location.InnerText = newLocation;
}
如果您需要更新
xmlcontent
,则可以编写:

xmlcontent = xmlDoc.OuterXml;

请明确说明要求。并将“\”替换为“\”。。。他们都是一样的。我想这期杂志的标题是这样的,他想用双斜杠代替单斜杠。我们这里的文本编辑器可能会奇怪地处理这个问题。至于这个问题,这感觉像是“使用LINQ遍历XML并更改您想要的内容”之类的问题。这是SO编辑器中的一个异常-\\a\。您需要键入\\\以获取\\I sugget使用XPath查找特定的标记,例如
XPath
,并直接为他替换“\”。@GeorgeAlexandria-您能提供一个具体的示例说明如何做到这一点吗?
xmlcontent = xmlDoc.OuterXml;