Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对于每个单词(其中第节中的另一个单词是“某物”)_C#_Xml_String_Kml - Fatal编程技术网

C# 对于每个单词(其中第节中的另一个单词是“某物”)

C# 对于每个单词(其中第节中的另一个单词是“某物”),c#,xml,string,kml,C#,Xml,String,Kml,我不确定这是否可行,但是 我有一大块文本kml格式,基本上是xml,它包含的代码部分看起来像这样,大约有75个 <color>ff0780dd</color> *bgcolor <th>MSOA11CD</th> *code <td>E02001618</td> 我需要做的是,在每个*代码不同的地方设置*bgcolor,一旦我有了*代码,我就可以在数据库中查找并指定正确的颜色 我可以使用正则表达式来获取以MSOA+4cha

我不确定这是否可行,但是

我有一大块文本kml格式,基本上是xml,它包含的代码部分看起来像这样,大约有75个

<color>ff0780dd</color> *bgcolor
<th>MSOA11CD</th> *code
<td>E02001618</td>
我需要做的是,在每个*代码不同的地方设置*bgcolor,一旦我有了*代码,我就可以在数据库中查找并指定正确的颜色

我可以使用正则表达式来获取以MSOA+4chars开头的每个*代码,但是我如何编辑上面的颜色代码呢


干杯

如果是XML,那么您可以使用LINQ to XML

// find nodes 
XNamespace ns = "url....";
var doc = XDocument.Load("Test.xml");
var items =( from item in doc.Descendants(ns+"Document").Descendants(ns+"Item")
            where CheckItem(item.Element(ns+"th").Value)
            select item).ToList();
// update nodes 
for (int i = 0; i < items.Count(); i++)
{
    items[i].SetElementValue(ns + "color", GetColor(items[i].Value));
}
// saving updated xml 
doc.Save("Test.xml");

相关:

这里是一个使用正则表达式的解决方案。此表达式的匹配将捕获示例中的颜色标记和TH标记

<color>[^<]+</color>\s*<th>MSOA(\w+)</th>
第一个捕获组包含4位MSOA代码。然后,您可以使用具有所需更新值的新标记替换整个匹配。下面是我在LINQPad中测试的C语言示例

void Main() {
    string inputString = @"
        <color>ff0780dd</color>
        <th>MSOA11CD</th>
        <td>E02001618</td>";
    string result = Regex.Replace(inputString, @"<color>[^<]+</color>\s*<th>MSOA(\w+)</th>", new MatchEvaluator(ComputeReplacement), RegexOptions.IgnoreCase | RegexOptions.Multiline);
    Console.Out.WriteLine(result);
}

public String ComputeReplacement(Match m) {
    const int GRP_MSOA_CODE = 1;
    string msoaCode = m.Groups[GRP_MSOA_CODE].Value;
    string colorCode = "SOME COLOR CODE"; //Get the code to use between the "color" tags from your DB.
    return String.Format("<color>{0}</color>\n<th>MSOA{1}</th>", colorCode, msoaCode);
}