[英]use c# how to read xml file
<Reports>
<Databases>
<Database>Axxest</Database>
<Database>Axxest2</Database>
</Databases>
</Reports>
如何读取Axxest
, Axxest2
使用C#读取XML文件,像这样?
我尝试这样:
XmlDocument xld = new XmlDocument();
xld.Load(XmlPath);
XmlNodeList xnl = xld.SelectSingleNode("Reports").ChildNodes;
tableList.Clear();
foreach (XmlNode xn in xnl)
{
tableList.Add(xn.InnerText);
}
但是有什么问题吗?
尝试SelectNodes
方法和XPath
:
XmlDocument xld = new XmlDocument();
xld.Load(XmlPath);
XmlNodeList xnl = xld.SelectNodes("Reports/Databases/Database");
foreach (XmlNode xn in xnl)
{
tableList.Add(xn.InnerText);
}
请参阅文档示例 :
StringBuilder output = new StringBuilder();
String xmlString =
@"<?xml version='1.0'?>
<!-- This is a sample XML document -->
<Items>
<Item>test with a child element <more/> stuff</Item>
</Items>";
// Create an XmlReader
using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
{
XmlWriterSettings ws = new XmlWriterSettings();
ws.Indent = true;
using (XmlWriter writer = XmlWriter.Create(output, ws))
{
// Parse the file and display each of the nodes.
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
writer.WriteStartElement(reader.Name);
break;
case XmlNodeType.Text:
writer.WriteString(reader.Value);
break;
case XmlNodeType.XmlDeclaration:
case XmlNodeType.ProcessingInstruction:
writer.WriteProcessingInstruction(reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
writer.WriteComment(reader.Value);
break;
case XmlNodeType.EndElement:
writer.WriteFullEndElement();
break;
}
}
}
}
OutputTextBlock.Text = output.ToString();
如果要在xml文件中查找某些节点,则可以使用XPath进行查询,这是w3学校中所需的全部。
如果调试代码,则可以发现xnl的计数为1,它仅包含“数据库”节点。 “ SelectSingleNode”表示选择一个节点,并在您的代码中首先选择“ Reports”,然后返回其子节点,该子节点仅包含“ Databases”。 您可以尝试使用Ria的代码,使用SelectNodes代替SelectSingleNode。 但是您仍然可以使用“ SelectSingleNode”,请尝试以下操作:
XmlNodeList xnl = xld.SelectSingleNode("Reports/Databases").ChildNodes;
希望对您有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.