1

このようなxmlファイルがあります

<Program xmlns="CBOpenIFSchema3_0">
    <Variables/>
    <CodeBlocks>
        <CodeBlock Name="Code1">
            <Code>
                Sample code 1
            </Code>
        </CodeBlock>
        <CodeBlock Name="Code2">
            <Code>
                Sample code 2
            </Code>
        </CodeBlock>
        <CodeBlock Name="Code3">
            <Code>
                Sample code 3
            </Code>
        </CodeBlock>
    </CodeBlocks>
</Program>

この xml から、各コードブロックの名前とそれに対応するコードを取得する必要があります。XElementを使用してこれを行うにはどうすればよいですか? 以下を使ってみました。

XElement xDoc = XElement.Load("test.xml");
IEnumerable<XElement> codeBlocks = xDoc.Descendants("CodeBlocks").Elements();
foreach (var c in codeBlocks)
    Console.WriteLine(c.Attribute("Name").Value);

codeBlocksが表示されてい"Enumeration yielded no results"ます。

編集:xmlns="CBOpenIFSchema3_0"問題を与えます。

4

1 に答える 1

3

ドキュメントはデフォルトの XML 名前空間を使用するため、クエリ内で使用する必要があります。

var xDoc = XDocument.Load("source.txt");
var ns = XNamespace.Get("CBOpenIFSchema3_0");

var codeBlocks = xDoc.Root.Element(ns + "CodeBlocks").Elements(ns + "CodeBlock");
foreach (var c in codeBlocks)
    Console.WriteLine((string)c.Attribute("Name"));

また、コードにいくつかの変更を加えました。

于 2013-09-19T06:52:27.443 に答える