如何提取xml文件储存的数据!

找了很久的数据,只找到xml格式的数据,但是用visual studio打开后我却看不懂。
没有编程背景,所以不知道怎么提取这些数据。
请问需要用什么软件?
或者需要写什么代码吗?

我想要xml文件中的数据。

  1. 用IE 或 Edge 浏览器打开xml,可以看到xml的层次结构,visual studio 也是带层级结构的。
  2. XML 的结构多种多样,用C#开发的话可用XmlDocument 类解析,搜一下,网上很多解析方法。
    例如:
    加载xml文件
    Load(string filename);
    加载xml流
    Load(Stream inStream);
    加载xml字符串
    LoadXml(string xml);
    b、Xml元素读取
    XmlDocument支持使用xpath表达式选择文档中节点,方法:
    SelectNodes(String expression)
    SelectSingleNode(string expression)
    SelectNodes 返回符合expression表达式的所有元素,返回值为XmlNodeList,比如本例子是通过XmlNodeList nodelist = xmlDoc.SelectNodes("/CameraGroup/Camera");获取所有的Camera节点。
    SelectSingleNode只返回第一个符合expression表达式的节点,如果没有返回null值。
    返回的XmlNodeList,我们可以通过循环读取,对于单个XmlNode,我们通过Attributes获取属性值。
    ————————————————
    版权声明:本文为CSDN博主「凡梦_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/mpegfour/article/details/78550228
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/661348
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:xml中文乱码解决
  • 除此之外, 这篇博客: (C++)将数据库文件导出XML文件以及解析XML文件生成数据库文件的处理方法中的 3、解析上面创建的xml 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    对上面的第2节中的xml文件进行解析。

    第一步,加载xml文件

    第二步,找到根节点

    第三步,获取子节点信息

    Import.cpp代码如下:

    #include <iostream>
    #include <vector>
    #include "tinyxml2.h"
    using namespace std;
    using namespace tinyxml2;
    
    tinyxml2::XMLDocument doc;
    
    typedef struct
    {
    	string value;
    }RowContent;
    
    typedef struct
    {
    	vector<RowContent> rowContents;
    }Row;
    
    typedef struct
    {
    	string ddl;
    	vector<Row> rows;
    }Table;
    
    typedef struct
    {
    	string name;
    	vector<Table> tables;
    }Database;
    
    //解析xml文件
    void DP(vector<Database> & DataBases)
    {
    	{
    		/*if (!root)
    		{
    			return;
    		}
    
    		const char* content;
    		content = root->GetText();
    		if (content)
    		{
    			cout << content << endl;
    		}
    
    		DP(root->FirstChildElement());
    
    		DP(root->NextSiblingElement());*/
    	}
    	XMLDocument doc;
    	doc.LoadFile("C:/Users/Administrator/Desktop/DataBaseXML.xml");
    	XMLElement *XMLdataBases = doc.RootElement();
    	XMLElement *XMLdataBase = XMLdataBases->FirstChildElement("database");
    
    	while (XMLdataBase)
    	{
    		XMLElement *DBName = XMLdataBase->FirstChildElement("name");
    
    		Database database;
    		database.name = (string)DBName->GetText();
    
    		XMLElement *DBTables = XMLdataBase->FirstChildElement("tables");
    		XMLElement *DBTable = DBTables->FirstChildElement("table");
    
    		while (DBTable)
    		{
    			XMLElement *XMLddl = DBTable->FirstChildElement("ddl");
    
    			Table table;
    			table.ddl = (string)XMLddl->GetText();
    
    			XMLElement *DBRows = DBTable->FirstChildElement("rows");
    			XMLElement *DBRow = DBRows->FirstChildElement("row");
    
    			while (DBRow)
    			{
    				Row row;
    
    				XMLElement *XMLRowValue = DBRow->FirstChildElement("value");
    				while (XMLRowValue)
    				{
    					RowContent rowContent;
    
    					const XMLAttribute *nullValue = XMLRowValue->FirstAttribute()->Next();
    					if (!nullValue)
    					{
    						rowContent.value = (string)XMLRowValue->GetText();
    					}
    					else
    					{
    						rowContent.value = "NULL";
    					}
    
    					row.rowContents.push_back(rowContent);
    					XMLRowValue = XMLRowValue->NextSiblingElement();
    				}
    
    				table.rows.push_back(row);
    				DBRow = DBRow->NextSiblingElement();
    			}
    			database.tables.push_back(table);
    			DBTable = DBTable->NextSiblingElement();
    		}
    
    		DataBases.push_back(database);
    		//下一个兄弟节点
    		XMLdataBase = XMLdataBase->NextSiblingElement();
    	}
    }
    
    int main()
    {
    	vector<Database> DataBases;
    
    	DP(DataBases);
    
    	for (vector<Database>::iterator it = DataBases.begin(); it != DataBases.end(); ++it)
    	{
    		Database database = *it;
    
    		cout << database.name.c_str() << endl;
    
    		for (vector<Table>::iterator it1 = database.tables.begin(); it1 != database.tables.end(); ++it1)
    		{
    			Table table = *it1;
    			cout << table.ddl.c_str() << endl;
    
    			for (vector<Row>::iterator it2 = table.rows.begin(); it2 != table.rows.end(); ++it2)
    			{
    				Row row = *it2;
    				for (vector<RowContent>::iterator it3 = row.rowContents.begin(); it3 != row.rowContents.end(); ++it3)
    				{
    					RowContent rowContent = *it3;
    					cout << rowContent.value.c_str();
    				}
    				cout << endl;
    			}
    		}
    		cout << endl;
    	}
    
    	system("pause");
    	return 0;
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^