1

私はLINQ to XMLについて多くのことを読んできましたが、残念ながら、このトピック (これは私にとってかなり新しいものです) はクリックできません。そうは言っても、適切な XML ボキャブラリに関する誤解は自由に修正してください。私の目標は、XML データ (以下を参照) を取得し、ノードごとに読み取ることです。この例では、" one "、" two "、および " three " 要素の値を取得するために、 Delimitersノードを開くことができるようにしたいと考えています。次に、 Sources/SourceTypeノード内から「 one」、「two」、および「three」要素の値を取得したいと思います。

<?xml version="1.0"?>
<Values>

  <Delimiters>
    <one>delim 1</one>
    <two>delim 2</two>
    <three>delim 3</three>
  </Delimiters>

  <Sources>

    <SourceType>
      <one>type 1</one>
      <two>type 2</two>
      <three>type 3</three>
    </SourceType>

  </Sources>

</Values>

私も読んでXMLTextReaderXMLReaderますが、ここでの私の状況でのベストプラクティスは何かを皆さんから聞きたいと思います.

読んでくれてありがとう、

エヴァン

4

3 に答える 3

5

これには、おそらく Linq to XML を使用することをお勧めします。解析は簡単です。

XDocument doc = XDocument.Load("test.xml");
foreach (var delimiter in doc.Descendants("Delimiters").Elements())
    Console.WriteLine(string.Format("{0} : {1}", delimiter.Name, delimiter.Value));

foreach (var type in doc.Descendants("SourceType").Elements())
    Console.WriteLine(string.Format("{0} : {1}", type.Name, type.Value));

Linq to XML の大きな利点は、必要なノードのクエリを実行するのが非常に簡単であるだけでなく (たとえば、大きな違いはありませんが、より複雑な XML では大幅に節約できます)、慣れればクエリ構文がどこにでもあることです。 Linq 全般 - 考え方を変える必要はありません。

于 2011-07-24T03:45:29.853 に答える
2

XmlDocument オブジェクトを使用し、XPath 式を使用してノードを検索する傾向があります。

// Load the xml into the reader
XmlReader reader;

XmlDocument dom = new XmlDocument()
dom.Load(reader);

XmlNodeList delimitorNode = dom.SelectSingleNode("/Values/Delimitors")
if (delmitorNode != null) {
    foreach(XmlNode childNode in delimitorNode.ChildNodes) {
        string delimitor = childNode.InnerText;
    }
}

XmlNodeList sourceNode = dom.SelectSingleNode("/Values/Sources/SourceType")
if (sourceNode != null) {
    foreach(XmlNode childNode in sourceNode.ChildNodes) {
        string sourceType = childNode.InnerText;
    }
}

W3Schools には XPath 構文のクイック リファレンスがあり、より高度な機能に関する多数のガイドが公開されています。 http://www.w3schools.com/xpath/xpath_syntax.asp

于 2011-07-24T03:54:06.947 に答える
0

私の意見では、おそらく XmlDocument がこれを達成するための最も簡単な方法です (これに関する多くのドキュメントを見つけることができます)。オブジェクトが XML ファイルに格納されている場合は、XML のシリアル化と逆シリアル化を確認することをお勧めします (XML ファイル全体を 1 行で読み込んで、構造を入力することができます)。

于 2011-07-24T03:43:55.893 に答える