将xml多个相同下节点的分类获取 C#

将xml多个相同下节点的分类获取 C#,第1张

//数据都帮你取出来完了,摆控件赋值自个弄弄就好了

using System;

using SystemCollectionsGeneric;

using SystemLinq;

using SystemText;

using SystemXml;

namespace XMLTest

{

    class Program

    {

        static void Main(string[] args)

        {

            XmlDocument xml = new XmlDocument();

            xmlLoad("aaxml");

            XmlNode xe = xmlSelectSingleNode("Information/SoftWare/Browsers");

            foreach (XmlNode item in xeChildNodes)

            {

                if (itemName == "Browser")

                {

                    if (itemSelectSingleNode("Name")InnerText == "Mozilla Firefox")

                    {

                        ConsoleWriteLine(itemSelectSingleNode("Name")InnerText);

                        ConsoleWriteLine(itemSelectSingleNode("Version")InnerText);

                        ConsoleWriteLine(itemSelectSingleNode("HomePage")InnerText);

                        XmlNode searchEnginesNode = itemSelectSingleNode("SearchEngines");

                        foreach (XmlNode itemEngine in searchEnginesNodeChildNodes)

                        {

                            ConsoleWriteLine(itemEngineSelectSingleNode("Name")InnerText);

                        }

                    }

                    else if (itemSelectSingleNode("Name")InnerText == "Google Chrome")

                    {

                        ConsoleWriteLine(itemSelectSingleNode("Name")InnerText);

                        ConsoleWriteLine(itemSelectSingleNode("Version")InnerText);

                        ConsoleWriteLine(itemSelectSingleNode("HomePage")InnerText);

                        XmlNode searchEnginesNode = itemSelectSingleNode("SearchEngines");

                        foreach (XmlNode itemEngine in searchEnginesNodeChildNodes)

                        {

                            ConsoleWriteLine(itemEngineSelectSingleNode("Name")InnerText);

                        }

                    }

                }

            }

            ConsoleReadKey();

        }

    }

}

SystemDataDataSet ds = new SystemDataDataSet();

dsReadXml(ServerMapPath("~/sfdsxml"));

using SystemXmlLinq;

XElement document = XElementLoad("地址");

//得到根节点

XElement root = documentElement("节点名称");

我也遇到了楼主的问题,希望动态得到节点名称,根据5楼的提示,我看到了tagName 这个重要的属性,然后自己研究一下成功了

<script type="text/javascript">

var xml>

给个例子你, 自己去套用就行给你

<xml version="10" encoding="utf-8">

<Accounts>

 <Account type="type1">

  <code>100001</code>

  <pass>123</pass>

  <name>李四</name>

  <money>100000000</money>

 </Account>

 <Account type="type2">

  <code>100002</code>

  <pass>123</pass>

  <name>张三</name>

  <money>100000</money>

 </Account>

</Accounts>

java代码解析:

import javaio;

/

  xml文件解析

  @author young

 

 /

import javaxxmlparsersDocumentBuilder;

import javaxxmlparsersDocumentBuilderFactory;

import orgw3cdomDocument;

import orgw3cdomElement;

import orgw3cdomNode;

import orgw3cdomNodeList;

public class XmlExam {

public static void main(String args[]) {

Element element = null;

// 可以使用绝对路劲

File f = new File("xmlxml");

// documentBuilder为抽象不能直接实例化(将XML文件转换为DOM文件)

DocumentBuilder db = null;

DocumentBuilderFactory dbf = null;

try {

// 返回documentBuilderFactory对象

dbf = DocumentBuilderFactorynewInstance();

// 返回db对象用documentBuilderFatory对象获得返回documentBuildr对象

db = dbfnewDocumentBuilder();

// 得到一个DOM并返回给document对象

Document dt = dbparse(f);

// 得到一个elment根元素

element = dtgetDocumentElement();

// 获得根节点

Systemoutprintln("根元素:" + elementgetNodeName());

// 获得根元素下的子节点

NodeList childNodes = elementgetChildNodes();

// 遍历这些子节点

for (int i = 0; i < childNodesgetLength(); i++) {

// 获得每个对应位置i的结点

Node node1 = childNodesitem(i);

if ("Account"equals(node1getNodeName())) {

// 如果节点的名称为"Account",则输出Account元素属性type

Systemoutprintln("\r\n找到一篇账号 所属区域: "

+ node1getAttributes()getNamedItem("type")

getNodeValue() + " ");

// 获得<Accounts>下的节点

NodeList nodeDetail = node1getChildNodes();

// 遍历<Accounts>下的节点

for (int j = 0; j < nodeDetailgetLength(); j++) {

// 获得<Accounts>元素每一个节点

Node detail = nodeDetailitem(j);

if ("code"equals(detailgetNodeName())) // 输出code

Systemout

println("卡号: " + detailgetTextContent());

else if ("pass"equals(detailgetNodeName())) // 输出pass

Systemout

println("密码: " + detailgetTextContent());

else if ("name"equals(detailgetNodeName())) // 输出name

Systemout

println("姓名: " + detailgetTextContent());

else if ("money"equals(detailgetNodeName())) // 输出money

Systemout

println("余额: " + detailgetTextContent());

}

}

}

} catch (Exception e) {

eprintStackTrace();

}

}

}

libxml2

xmlReadMemory

xmlParseMemory

网上的大部分关于xml的文章都是处理xml文件的,就没直接处理xml字符串的说明。

下面是用libxml2解析xml格式的字符串的函数顺序:

1 xmlParseMemory,字符串转为XML文档

2 xmlDocGetRootElement,获取XML文档根节点

3 xmlStrcmp,比较XML字符串,与strcmp差不多

4 curr = curr->xmlChildrenNode,XML节点指针指向第一个子节点

5 curr = curr->next,XML节点指针指向下一个兄弟节点

6 xmlNodeGetContent,获取XML节点的内容

7 xmlFreeDoc,释放节点,与free差不多

>

 public

 

void

 

LoadNodes() {

    Element eRoot = docgetDocumentElement();

        try {

            NodeList n1 = docgetElementsByTagName("student");

            Element e;

            int len = n1getLength();

            for (int j = 0; j < len; j++) {

                e = (Element) n1item(j);

                //如果此节点元素为根节点,则跳过

                if (eequals(eRoot)) {

                    continue;

                } else {

                    //若此节点不为根节点,再来判断它的父节点是否为根节点,如果是,那就是你想要的 student 节点。

                    if ((Element)egetParentNode()==eRoot) {

                        printNode(e);

                    } 

                }

            }

        } catch (Exception ie) {

            Systemoutprintln(ietoString());

        }

    }

以上就是关于将xml多个相同下节点的分类获取 C#全部的内容,包括:将xml多个相同下节点的分类获取 C#、C#怎样获取指定xml节点的路径、c#写了一个xml,load后如何获得它的根节点我需要给根节点添加很多子节点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9266270.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存