0

XML ドキュメントをXElement

次のようになります。

<my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-03-14T05:31:16" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-AU">
<my:header>
    <my:item1></my:item1>
    <my:item2></my:item2>
    <my:item3></my:item3>
</my:header>
<my:header2>
    <my:title1>Blah</my:title1>
    <my:title2>Zlib</my:title2>
    <my:title3>Bleep</my:title3>
</my:header2>

私がやりたいのは、入力「ノード名」(つまり「title1」、「title2」、「title3」) を指定して「ノードテキスト」(つまり「Blah」、「Zlib」または「Bleep」) を検索することだけです。

私は試してみましたがxeData.Attribute("title1")xeData.Element("title1")さまざまな linq ステートメントも成功しませんでした。

これどうやってするの?

4

2 に答える 2

1

名前空間でノードを検索または作成する場合XNamespaceは、LINQtoXMLの一部であるオブジェクトの使用に役立ちます。次に例を示します。

    XElement myFields = XElement.Load("../../XMLFile3.xml");
    XNamespace my = myFields.GetNamespaceOfPrefix("my");
    Console.WriteLine(myFields.Element(my + "header2").Element(my + "title1").Value);

http://msdn.microsoft.com/en-us/library/bb387042.aspxも参照してください。

于 2012-04-18T09:49:49.017 に答える
1

「タイトル」要素の名前空間を考慮する必要があります。代わりにこれを試してください:

string titleText = xeData.Element(XName.Get("title1", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-03-14T05:31:16")).Value;

ここでは、xeData が「ヘッダー」要素であると想定しています。そうでない場合は、最初にそれを選択する方法を理解する必要があります。

于 2012-04-18T07:09:10.050 に答える