任何朋友都可以帮忙解决这个问题。 现在我想在获得值时阅读完整的路径。
我想用C#读取XML中父节点,子节点,子子节点等的名称。 我之前不知道任何节点名称。尽可能帮助
<?xml version="1.0" encoding="UTF-8" ?>
<Element xsi:schemaLocation="http://localhost/AML/CaseInvestigationMangement/Moduli/XmlImportControls/xsdBorrow.xsd xsd2009027_kor21.xsd" Kod="370" xmlns="http://localhost/AML/CaseInvestigationMangement/Moduli/XmlImportControls/xsdBorrow.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
/2001/XMLSchema-instance">
<ANode>
<BNode>
<CNode>
<Example>
<Name>John</Name>
<NO>001</NO>
</Example>
</CNode>
</BNode>
<ID>1234</ID>
<Date>2011-10-01</Date>
</ANode>
<ANode>
<BNode>
<CNode>
<Example>
<Name>Mike</Name>
<NO>002</NO>
</Example>
</CNode>
</BNode>
<ID>5678</ID>
<Date>2011-03-31</Date>
</ANode>
</Element>
我想逐个读取每个节点,如阳极,bnode,cnode,Example,然后是name和NO。 现在我想在获得值时读取完整路径。请帮忙......
答案 0 :(得分:0)
我想逐个阅读每个节点......
然后我建议您尝试使用XmlReader
课程。以下代码段演示了读取节点名称和值的基本用法:
using (Stream fileStream = File.OpenRead("path to your xml file"))
{
using (var reader = XmlReader.Create(fileStream))
{
while (reader.Read())
{
string indent= string.Join(string.Empty, Enumerable.Repeat(" ", reader.Depth));
if (reader.NodeType == XmlNodeType.Element)
{
Console.WriteLine(indent+ reader.Name);
}
else if (reader.NodeType == XmlNodeType.Text)
{
Console.WriteLine(indent+ reader.Value);
}
}
}
}
<强>输出强>
Element
/2001/XMLSchema-instance">
ANode
BNode
CNode
Example
Name
John
NO
001
ID
1234
Date
2011-10-01
ANode
BNode
CNode
Example
Name
Mike
NO
002
ID
5678
Date
2011-03-31
希望这有帮助。
答案 1 :(得分:0)
您可以使用类似以下方法的内容
string GetHTMLOutputFromXML()
{
StringBuilder output = new StringBuilder();
XmlTextReader reader = null;
try
{
//Get a reader
reader = new XmlTextReader(ConfigurationManager.AppSettings["XMLPath"] + "XMLFile.xml");
string elementName = "";
while (reader.Read())
{
//For every node
switch (reader.NodeType)
{
//If you happen upon an element mark down its name
case XmlNodeType.Element:
elementName = reader.Name;
output.Append(elementName + " - ");
break;
//If this is an element, use its value
case XmlNodeType.Text:
output.Append( reader.Value + "<br/>");
break;
}
//You could also use the following code to get attribute values
//if (reader.HasAttributes)
// output.Append(reader.GetAttribute("attr") + "<br/>");
}
}
catch (Exception ex)
{
output.Append("Error while reading the xml file");
}
finally
{
// Close the reader.
reader.Close();
}
return output.ToString();
}
在XML上使用此方法将返回
元素 - / 2001 / XMLSchema-instance“&gt; ANode - BNode - CNode - 示例 - 名称 - John NO - 001 ID - 1234 日期 - 2011-10-01 ANode - BNode - CNode - 示例 - 名称 - Mike NO - 002 ID - 5678 日期 - 2011-03-31
您可以更改代码以按照您希望的方式显示结果。
您还可以阅读有关基本XML操作的更多信息here