我在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
请帮助阅读内部数据
答案 0 :(得分:1)
XmlReader
和子类只是最难的方法。除非你需要避免将整个解析的对象图加载到内存中,否则最好避免使用。
使用XDocument
和XPath
(using System.Xml.XPath
获取extensions)更容易:
var doc = XDocument.Load(path);
var iterator = doc.XPathSelectElements("/result/Accounts/row/FL");
foreach (var flNode in iterator) {
var text = flNode.Value;
}
答案 1 :(得分:0)
看一下使用XPath而不是像你正在做的原始XML解析。
有关XPath的详细信息,请参阅this链接。
答案 2 :(得分:0)
使用LINQ2XML ..Its 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
}
答案 3 :(得分: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
}