用Foreach c#所期望的格式保存XML时遇到麻烦

本文关键字:XML 保存 遇到 麻烦 格式 Foreach 期望 | 更新日期: 2023-09-27 18:05:10

我有一个问题,以我正在寻找的格式保存XML文件也许有人可以帮助我这里是我的代码

string testInput= @"<!LinkName>MyChildData<#";
var testRegex = new Regex(@"(?<name>(?<=<!).*?(?=>))|(?<namex>(?<=>).*?(?=<#))",
                          RegexOptions.Multiline | RegexOptions.Singleline);
foreach (Match myMatch in testRegex.Matches(testInput))
{                     
    xml.NewChild2(myMatch.Groups["name"].Value, myMatch.Groups["namex"].Value);
}
xml.SaveXml("simple.xml");

Result I 'm expected

<rootNode>
    <LinkName>MyChildData</LinkName>
</rootNode>

但是结果是

<rootNode>
    <LinkName/> 
    <nothing>MyChildData</nothing>
</rootNode>

任何建议将不胜感激由于

用Foreach c#所期望的格式保存XML时遇到麻烦

将节点添加到xml中,而不是添加到<LinkName>中。查找AddChild()

问题在于正则表达式,当我运行当前字符串时,我得到两个不同的匹配集。一种是Name为LinkName,但namex为空,另一种是Name为空,但namex是正确的。

尝试使用这个正则表达式:

(?<name>(?<=<!).*?)>(?<namex>.*?(?=<#))

请注意,我没有使用选项,而是使用|字符,而是将两者连接在一起,忽略了>字符。这样就保证了结构体必须是name>value

如果你不能保证这种结构,那么你需要重新考虑整个过程。