-2

重複の可能性:
C# を使用して URL から XML ノードを読み取る方法は?

私は以下の XML を持っています。C# を使用してこの XML URL を読みたいです。

<result>
<Accounts>
<row no="1">
<FL val="ACCOUNTID">012345678</FL>
<FL val="SMOWNERID">012345678</FL>
<FL val="Account Owner">
<![CDATA[ demo name]]>
</FL>
<FL val="Account Name">
<![CDATA[ demo ]]>
</FL>
<FL val="Phone">
<![CDATA[ +12 34 5567 345]]>
</FL>
<FL val="Account Site">
<![CDATA[ demo]]>
</FL>

URL から XML を読み取るために以下のコードを使用しましたが、コンソールに以下の出力が表示されます

<FL val="Account Name">
<![CDATA[ demo ]]>
</FL>
<FL val="Phone">
</FL>
<FL val="Account Site">
</FL>

私のコードは以下です:

String xmlURL = "http://localhost/my.xml";
        XmlTextReader xmlReader = new XmlTextReader(xmlURL);
        while (xmlReader.Read())
        {
            switch (xmlReader.NodeType)
            {
                case XmlNodeType.Element: // The node is an element.
                    Console.Write("<" + xmlReader.Name);

                    while (xmlReader.MoveToNextAttribute()) // Read the attributes.
                        Console.Write(" " + xmlReader.Name + "=’" + xmlReader.Value + "’");
                    Console.WriteLine(">");
                    break;
                case XmlNodeType.Text: //Display the text in each element.
                    Console.WriteLine(xmlReader.Value);
                    break;
                case XmlNodeType.EndElement: //Display the end of the element.
                    Console.Write("</" + xmlReader.Name);
                    Console.WriteLine(">");
                    break;
            }
        }
        Console.WriteLine("Press any key to continue…");
        Console.ReadLine(); //Pause

内部データを読むのを手伝ってください

4

4 に答える 4

1

XmlReaderサブクラスは、ほぼ最も難しいアプローチです。解析されたオブジェクト グラフ全体をメモリにロードすることを回避する必要がない限り、回避することをお勧めします。

XDocumentand XPath(拡張子using System.Xml.XPathを取得する) を使用する方が簡単です。

var doc = XDocument.Load(path);
var iterator = doc.XPathSelectElements("/result/Accounts/row/FL");
foreach (var flNode in iterator) {
  var text = flNode.Value;
}
于 2012-09-04T12:49:51.120 に答える
0

あなたが行っているような生の XML 解析の代わりに XPath を使用することを検討してください。

XPath の詳細については、このリンクを参照してください。

于 2012-09-04T12:48:35.067 に答える
0

LINQ2XMLを使用してください..そのCOOL

XElement doc=XElement.Load("yourXML");
foreach(XElement x in doc.Descendants("results").Descendants("Accounts").Descendants("row").Elements())
{
x.Name;//Its name
x.Attribute("val").Value;//its val attributes value
x.Value;//its value
}
于 2012-09-04T12:53:23.187 に答える