1

次のように定義されたxml(Foo.xml)テンプレートがあります。

<Parent:Request xmlns:user="http://xxx.com/">
<Parent:ElemA></Parent:ElemA>
<Parent:ChildNode>
    <ElemB></ElemB>
    <ElemC></ElemC>
</Parent:ChildNode>
<Parent:ParentName></Parent:ParentName>
</Parent:Request>

私のコードでは、xmltemplateの親要素を次のように設定できます。

public void FooA( MyDomainObject DoM)
{
    private readonly XNamespace myNS = "http://ANameSpace.com/";
    XElement fooRequestDoc = XElement.Load("Templates/Foo.xml");

    XElement ElemA_El = fooRequestDoc.Descendants(myNS + "ElemA").FirstOrDefault();
    ElemA_El.SetValue(DoM.ElemA); 
}

この場合、ElemAの値が「ElementA」の場合、ElemA_Elパラメーターはこの値に設定されます。

私の質問は、ElemBやElemCなどの特定の子ノート要素を設定するにはどうすればよいですか?

次のように「要素」を使用してみました(子要素を取得するために使用されることを理解しているため)。

XElement ElemB_El = fooRequestDoc.Element(myNS + "ChildNode");

しかし、私が探しているElemBだけでなく、ブロック全体を返しています。

4

1 に答える 1

1

タグの名前がわかっている場合は、次のようにすることができます。

XElement ElemB_El = (from node in fooRequestDoc.Descendants() where node.Name == myNS + "ElemB" select node).FirstOrDefault();

タグの名前がわからない場合は、次のようにChildNodeのすべての子孫を取得できます。

var nodes = (from node in fooRequestDoc.Descendants(myNS + "ChildNode").Elements() select node).ToList();
于 2013-02-27T13:05:03.043 に答える