3

C# では、次のように XmlNode を使用してこれらの属性から値を取得する必要があります。

ルート要素 (ServerConfig):

  • タイプ

  • バージョン

  • 日付を作成します

子ノード (アイテム):

  • 名前

  • ソース

  • 行き先

XML:

<?xml version="1.0" encoding="utf-8"?>
<ServerConfig type="ProjectName" version ="1.1.1.2" createDate ="2013-07-30T15:07:19.3859287+02:00" >
<items>
    <item  name="fs" type="directory" source="C:\temp\source" destination="C:\temp\target" action="Create" />
    <item  name="testdoc.txt" type="file" source="C:\temp\source" destination="C:\temp\target" action="Update" />
</items>
</ServerConfig>

C#:

        XmlTextReader reader = new XmlTextReader(fileManager.ConfigFile);
        XmlDocument doc = new XmlDocument();
        XmlNode node = doc.ReadNode(reader);

        // failed to get values here
        var Version = node.Attributes["version"].Value;
        var Type = node.Attributes["type"].Value;
        var Date = node.Attributes["createDate"].Value;

        //how to get values from items/item attributes here?

あなたのサンプルコードに感謝します:)

4

5 に答える 5

4

LINQ to XMLを使用できます(これは、最新の .Net バージョンで推奨されます)。

var xdoc = XDocument.Load(fileManager.ConfigFile);
var serverConfig = xdoc.Root;
string version = (string)serverConfig.Attribute("version");
DateTime date = (DateTime)serverConfig.Attribute("createDate");
string type = (string)serverConfig.Attribute("type");

var items = from item in serverConfig.Element("items").Elements()
            select new {
                Name = (string)item.Attribute("name"),
                Type = (string)item.Attribute("type"),
                Source = (string)item.Attribute("source"),
                Destination = (string)item.Attribute("destination")
            };

見てください - 厳密に型指定された変数に解析された数行のコードとファイル。日付も文字列ではDateTimeなくオブジェクトです。項目は、xml 属性に対応するプロパティを持つ匿名オブジェクトのコレクションです。

于 2013-08-05T13:11:01.890 に答える
0

ドキュメントをロードします。

XmlDocument doc = new XmlDocument();
doc.Load(fileManager.ConfigFile);

次に、XPath を使用して何でも選択できるようになります。

doc.SelectSingleNode(XPath); 
doc.SelectNodes(XPath);
于 2013-08-05T13:10:14.597 に答える