阅读和分析XML字符串
问题描述:
请有人可以帮助我解决如何分析以下XML:阅读和分析XML字符串
<staff name="peter">
<staff name="martin">
<staff name="mike" />
</staff>
<staff name="stuart" />
</staff>
我如何引用在“”值是多少? 基本上我想返回所有员工,他们的名字以特定字母开头,例如'm'
答
由于您没有提供任何您已经尝试过的代码,我可以指导您一点。
- 使用
XDocument
,以帮助您解析 - 使用
Descendants
方法(IT连锁)来查找您的节点/元素 - 呼叫类似
First()
得到您想要的数据
检查this回答关于使用XDocument
和Descendants
的一个小例子希望这会有所帮助
+0
说实话,这不是我以前做过的事情,只是我被要求看的东西。我搜索并尝试了不同的东西,这些东西并不真正给我想要的东西。 –
+0
@ Richard.Gale我已经更新了答案,并为您提供了一个示例链接。 –
答
使用此引用将您的xml文件读入对象。
public static T DeserializeXMLFileToObject<T>(string XmlFilename)
{
T returnObject = default(T);
if (string.IsNullOrEmpty(XmlFilename)) return default(T);
try
{
StreamReader xmlStream = new StreamReader(XmlFilename);
XmlSerializer serializer = new XmlSerializer(typeof(T));
returnObject = (T)serializer.Deserialize(xmlStream);
}
catch (Exception ex)
{
ExceptionLogger.WriteExceptionToConsole(ex, DateTime.Now);
}
return returnObject;
}
您调用此方法使用是这样的:
MyObjType MyObj = DeserializeXMLFileToObject<MyObjType>(FilePath);
一旦你有对象:
for(int i = 0; i < StaffMemebers.length; i++)
{
NamesStartingWithLetter(StaffMemebers[i],'A',ref NameList);
}
public void NamesStartingWithLetter(StaffObject staffMember,char letter,ref List<string> NamesFound)
{
if(staffMember.Name[0]==letter)
NamesFound.Add(staffMember.Name);
if(staffMember.staff!=null)
NamesStartingWithLetter(staffMember.staff, letter, ref NamesFound);
}
[如何:查找具有特定属性(XPath的LINQ元素到XML)(C#)](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/how-to-find-elements-with-a-specific-attribute- xpath-linq-to-xml) –
这看起来非常奇怪的构造XML,它是一个减少ve更大文件的rsion。 – PaulF
它来自一个Api返回 –