C# “如何替换”\&引用;及\\&引用;仅针对XML中的特定标记?
我正在尝试匹配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
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;