0

別のプロジェクトに組み込まれるプロジェクトに取り組んでいます。私がスロットに入れているプロジェクトは、変更できない奇妙な XML 構文を生成します。

説明するために、それは奇妙な要素を持っています

<DocumentRoot>
   <Parent>
      <Child-Which-Can-Occur-Random-Number-Of-Times> Data </Child-Which-Can-Occur-Random-Number-Of-Times>
      <Weird-Elt_12309843028938> Data I need </Weird-Elt_12309843028938>
      <Weird-Elt_84509843323232> Data I need </Weird-Elt_84509843323232>

   </Parent>
   <Parent>
      <Child-Which-Can-Occur-Random-Number-Of-Times> Data </Child-Which-Can-Occur-Random-Number-Of-Times>
      <Weird-Elt_12309843028938> Data I need </Weird-Elt_12309843028938>
   </Parent>
   <Parent>
      <Child-Which-Can-Occur-Random-Number-Of-Times> Data </Child-Which-Can-Occur-Random-Number-Of-Times>
      <Weird-Elt_12309843028938> Data I need </Weird-Elt_12309843028938>
   </Parent>
</DocumentRoot>

必要なもの:「Weird-Elt」タグの名前とその内容。

問題 : XML を変更できません。Weird-Elt 要素は、その上の要素と同様に、ランダムな回数発生する可能性がありますChild-Which-Can-Occur-Random-Number-Of-Times

私が見ることができる唯一の解決策は、Linq to XML を正規表現と組み合わせて使用​​し、Weird-Elt の名前に一致させることです。

私はこれで正しいですか?

4

2 に答える 2

4
var nodeList = xmlDoc.DocumentElement.SelectNodes("//*[starts-with(name(),'Weird-Elt_')]");

名前が常にWeirdで始まるとは限らない場合-Elt_trycontains

var nodeList = xmlDoc.DocumentElement.SelectNodes("//*[contains(name(),'Weird-Elt_')]");
于 2012-04-18T17:50:59.043 に答える
3

はい。それで合っています。通常式で Linq to SQL を使用する必要があります。サンプルはこちら

Regex regEx = new Regex("Weird-Elt_.*", RegexOptions.Compiled);

XDocument doc = XDocument.Parse(xml1);
var x1 = from e in doc.Descendants("Parent").Descendants()
         where regEx.IsMatch(e.Name.LocalName)
        select e;

それが役に立てば幸い。

于 2012-04-18T17:31:18.410 に答える