Maison >développement back-end >Tutoriel XML/RSS >Comment Linq en XML traverse-t-il les données stockées ?

Comment Linq en XML traverse-t-il les données stockées ?

PHPz
PHPzoriginal
2017-04-23 16:40:572127parcourir

Souvent, nous devons utiliser des fichiers XML, mais que sont les fichiers XML ?

Utilisons un exemple pour illustrer : fichier testResult.xml

<?xml version="1.0" encoding="utf-8" ?>
<Columns>
  <column id="序号">
    <name>序号</name>
  </column>
  <column id="检验项目">
    <name>检验项目</name>
  </column>
  <column id="单位">
    <name>单位</name>
  </column>
  <column id="标准要求">
    <name>标准要求</name>
  </column>
  <column id="检验结果">
    <name>检验结果</name>
  </column>
  <column id="结论">
    <name>结论</name>
  </column>
</Columns>

Ce qui précède est un fichier Xml Nous savons que le fichier Xml est utilisé. Stocke les données, alors comment pouvons-nous parcourir ces données ?

En fait, le moyen le plus simple est d'utiliser Linq :

   private void GetTestResultXml()
    {
        List<string> iTestResultXml=new List<string>();
        //定义并从xml文件中加载节点(根节点)
        XElement rootNode = XElement.Load(@"..\..\Xml\testResult.xml");   
        //查询语句: 获得根节点下name子节点(此时的子节点可以跨层次:孙节点、重孙节点......)
        IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("column")
                                            select target;
        foreach (XElement node in targetNodes)
        {
            iTestResultXml.Add(node.Value);
        }
    }

De cette façon, nous pouvons obtenir toutes les données de la balise 9ca8bcd8dc9da41be539812c43422c59 à la liste iTestResultXml.

Dans le fichier testResult.xml, on voit que la balise 9ca8bcd8dc9da41be539812c43422c59 définit son propre identifiant, et cet identifiant n'est pas ses données, mais un de ses attributs,

Donc et si nous voulons obtenir ses attributs au lieu du contenu de ses balises ?

private void GetTestResultXml()
    {
        List<string> iXmlID = new List<string>();
        //定义并从xml文件中加载节点(根节点)
        XElement rootNode = XElement.Load(@"..\..\Xml\testResult.xml");   
        //查询语句: 获得根节点下name子节点(此时的子节点可以跨层次:孙节点、重孙节点......)
        IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("column")
                                            select target;
        foreach (XElement node in targetNodes)
        {
             iXmlID.Add(node.Attribute("id").Value);   //获取指定属性的方法
        }
    }

De cette façon, nous obtenons la liste iXmlID de l'attribut id dans la balise 9ca8bcd8dc9da41be539812c43422c59

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn