-1

探している形式で 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");

私が期待している結果は

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

しかし、私が得る結果は

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

アドバイスをいただければ幸いです ありがとう

4

2 に答える 2

1

You are adding your node to the xml, not to <LinkName>. Look up AddChild()

于 2013-03-20T16:45:17.683 に答える
0

問題は Regex にあります。現在の文字列を実行すると、2 つの異なる一致セットが取得されます。Name が LinkName で namex が空である場合と、name が空であるが namex が正しい場合です。

代わりにこの正規表現を使用してみてください:

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

|オプションの文字を使用する代わりに、文字を無視して 2 つをリンクする方法に注意してください>。このようにして、構造が であることが保証されますname>value

その構造を保証できない場合は、プロセス全体を再考する必要があります。

于 2013-03-20T16:51:15.907 に答える