5 回答
TA贡献1836条经验 获得超3个赞
这就是我为实现这一目标所做的工作。
var match = Regex.Match(xml.Document.ToString(), @"KeyValueOfstringOutcome.*>");
if (match.Success)
{
var replacedText = Regex.Replace(xml.Document.ToString(), @"KeyValueOfstringOutcome.*>", "KeyValueOfstringOutcome>");
}
TA贡献1784条经验 获得超9个赞
如果我对你的理解是正确的,你想摆脱Test1,Test2等等。我建议使用这种Replace方法。
string replacedXML = Regex.Replace(xml.Document.ToString(),
@"KeyValueOfstringOutcomeTest\d+",
"KeyValueOfstringOutcome");
\d+将匹配关键字后面出现的 1 次或多次数字
TA贡献1982条经验 获得超2个赞
如果有帮助,试试这个。
string result = Regex.Replace(xml.Document.ToString(), "[a-zA-Z0-9]*KeyValueOfstringOutcome[a-zA-Z0-9]*","KeyValueOfstringOutcome");
TA贡献1834条经验 获得超8个赞
我不会REGEX用来匹配和更改节点的名称。如果你曾经更新过你的文件或命名,它就会崩溃或改变一些其他包含流行语的节点。
childnode所以我会在你想要更改的 lvl/hierarchy 中创建一个循环,然后抓住它并重命名它。
foreach (XmlNode node in doc.ChildNodes)
{
// [2] should be the the deepth of childenotes named `KeyValueOfstringOutcomeTestX`
node.ChildNode[2].Name = "YOUR NEW NAME TO THIS NODE";
}
doc.Save(); // Change renamed nodes to the document.
TA贡献1818条经验 获得超3个赞
使用 xml linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication107
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
List<XElement> keyValueOfstringOutcomeTests = doc.Descendants().Where(x => x.Name.LocalName.StartsWith("KeyValueOfstringOutcomeTest")).ToList();
foreach (XElement keyValueOfstringOutcomeTest in keyValueOfstringOutcomeTests)
{
keyValueOfstringOutcomeTest.ReplaceWith(new XElement("KeyValueOfstringOutcomeTest", keyValueOfstringOutcomeTest.Elements()));
}
}
}
}
- 5 回答
- 0 关注
- 89 浏览
添加回答
举报