【发布时间】:2020-04-07 15:50:52
【问题描述】:
我有一个包含以下内容的文本文件:
<Person>
<Prenom>Jack</Prenom>
<Nom>Jhon</Nom>
<Adresse>4 rue de la Mélandine</Adresse>
<Tél></Tél>
<Email>email@gmail.com</Email>
<PhotoPath>c:\Program Files\Zonedetec\Gestionnaire de tâche v2\Img\5295f1ea-372a-4f2f-8f32-c52e8a48cc0839105.png</PhotoPath>
<Age>19</Age>
<Id>4640434</Id>
</Person>
<Person>
<Prenom>Jean</Prenom>
<Nom>Delamar</Nom>
<Adresse>13 rue de la Mélandine</Adresse>
<Tél></Tél>
<Email>email@gmail.com</Email>
<PhotoPath>c:\Program Files\Zonedetec\Gestionnaire de tâche v2\Img\5295f1ea-372a-4f2f-8f32-c52e8a48cc0839105.png</PhotoPath>
<Age>19</Age>
<Id>4640434</Id>
</Person>
我想检索标签之间的所有值 例如,在一个列表中,我想检索和
之间的值(这里是 2)我该怎么做?
我试过了:
internal static void LoadPerson()
{
string data = File.ReadAllText(Main.PersonnePath);
Regex regex = new Regex("<Person>(.*)</Person>");
var v = regex.Match(data);
string s = v.Groups[1].ToString();
MessageBox.Show(s);
}
除了 s 什么都不包含
你能帮帮我吗? 谢谢你。
【问题讨论】:
-
Person标签之间有两个以上的值。您的文件是纯 XML 文件,您可以使用XmlSerializer并将您的 xml 反序列化为对象以获取任何字符串而不是 -
你为什么要从我身边夺走我的你好?没有资格打招呼?
-
正如@PavelAnikhouski 所说,您需要使用
XmlSerializer-> docs.microsoft.com/en-us/dotnet/api/… -
@PavelAnikhouski 的答案是正确的,只是它在这里不起作用,因为您的 XML 不正确。它有两个 Person 标签,但它们必须是一个根标签。所以 XMLSerializer 会失败。如果它只是示例并且原始文件具有像
<persons>这样的包装标签,那么 XMLSerializer 将起作用。 -
@SumitGupta 我同意你的看法。也许他不知道 XML 是什么。因此,我在回答中解释了两种方式。我也赞成 Pavel 的回答,因为它提供了非常好的使用 C# 处理 XML 的信息。