-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

尝试创建 XMLDocument,然后用文件填充它,最后通过 for 循环传递。

string output;

XmlDocument myxml = new XmlDocument(); //create XML document object

myxml.LoadXml("path to your document"); //populate doc with youe doumnet

XmlElement my_xml_element = myxml.DocumentElement; 

XmlAttributeCollection attribute = myElement.Attributes;


foreach (XmlAttributeCollection test_atribute in attribute )
{
   output = test_attribute.Name
}
于 2012-09-04T12:59:05.607 回答
0

使用 LINQ2XML ..它很酷

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 回答
0

看看使用 XPath 而不是像您正在做的原始 XML 解析。

有关 XPath 的更多信息,请参阅链接。

于 2012-09-04T12:48:35.067 回答