C# 使用C进行内部XML标记解析#
我已经获取了从ONet返回的XML,并希望解析要使用的信息。 下面是我编写的代码,用于尝试解析下面标记的内部文本,“输入”是Onet XMLC# 使用C进行内部XML标记解析#,c#,xmlnodelist,C#,Xmlnodelist,我已经获取了从ONet返回的XML,并希望解析要使用的信息。 下面是我编写的代码,用于尝试解析下面标记的内部文本,“输入”是Onet XML <career code="17-1011.00"> <code>17-1011.00</code> <title>Architects</title> <tags bright_outlook="false" green="true" apprenticeship="fa
<career code="17-1011.00">
<code>17-1011.00</code>
<title>Architects</title>
<tags bright_outlook="false" green="true" apprenticeship="false" />
<also_called>
<title>Architect</title>
<title>Project Architect</title>
<title>Project Manager</title>
<title>Architectural Project Manager</title>
</also_called>
<what_they_do>Plan and design structures, such as private residences, office buildings, theaters, factories, and other structural property.</what_they_do>
<on_the_job>
<task>Consult with clients to determine functional or spatial requirements of structures.</task>
<task>Prepare scale drawings.</task>
<task>Plan layout of project.</task>
</on_the_job>
</career>
XmlDocument inputXML=new XmlDocument();
LoadXml(输入);
XmlElement root=inputXML.DocumentElement;
XmlNodeList titleList=root.GetElementsByTagName(“也称为”);
for(int i=0;i
我期待一个四号的节点列表。但是,当我打印结果时,结果的大小为1:
“架构项目架构项目经理架构项目经理”
我是否构建了错误的XMLNodeList标题列表?如何进一步遍历和处理XML树以获取“也称”下的“title”标记的内部值?您将获得名为
也称为
的元素。您的列表中只有一个这样的元素。您可能想要的是获取节点的子节点(也称为
节点)
例如:
XmlDocument inputXML = new XmlDocument();
inputXML.LoadXml(input);
XmlElement root = inputXML.DocumentElement;
XmlNodeList titleList = root.GetElementsByTagName("also_called");
for (int i = 0; i < titleList.Count; i++)
{
Console.WriteLine(titleList[i].InnerText);
}
也可以考虑使用<代码> XDoC/<代码>和LINQ到XML,而不是
XmlNodeList also_calledList = root.GetElementsByTagName("also_called");
XmlNode also_calledElement = also_calledList[0];
XmlNodeList titleList = also_calledElement.ChildNodes;
foreach (XmlNode titleNode in titleList)
{
Console.WriteLine(titleNode.InnerText);
}
您只需要一点XPath。这将选择作为第一个
的子节点(也称为)的所有标题节点
XDocument root = XDocument.Parse(input);
foreach (XElement titleNode in root.Descendants("also_called").First().Elements())
{
Console.WriteLine(titleNode.Value);
}
很少需要使用GetElementsByTagName
或ChildNodes
及其类似项和/或尝试检查节点以确定它是否是您想要的节点。使用XmlDocument
浏览Xml的全部内容是使用,在获取满足特定条件的节点时,您可以使用它指定相当多的内容;无论是在树中的结构还是内容方面。我不能同时检查这两个答案,也没有声誉,尽管我尝试了这两段代码。非常感谢!
XmlDocument inputXML = new XmlDocument();
inputXML.LoadXml(input);
foreach(var node in root.SelectNodes("also_called[1]/title"))
{
Console.WriteLine(node.InnerText);
}