精华内容
下载资源
问答
  • java xml,java生成xml文档,java操作XML文件设置值
  • c# 操作xml文件 报 xml文档无效 文档没有根元素 看图 看看我那里写错了 ![图片说明](https://img-ask.csdn.net/upload/201512/01/1448948369_299927.jpg)
  • mysql存储xml文件There have been several approaches that have been proposed to organize the contents of the XML document basically to facilitate the subsequent querying and retrieval have been proposed...

    mysql存储xml文件

    There have been several approaches that have been proposed to organize the contents of the XML document basically to facilitate the subsequent querying and retrieval have been proposed.

    已经提出了几种方法来基本上组织XML文档的内容,以方便随后的查询和检索。

    The following are the most common approaches to store the XML document:

    以下是存储XML文档最常用方法

    1) Using a DBMS to store the document as text

    1)使用DBMS将文档存储为文本

    • An RDBMS can be used to the store the complete XML document as text field within the DBMS records or objects.

      RDBMS可用于将完整的XML文档存储为DBMS记录或对象中的文本字段。

    • This approach is basically when DBMS has a special module for processing the XML document, and it can work for storing document-centric XML documents.

      基本上,这种方法是在DBMS具有用于处理XML文档的特殊模块时,并且可以用于存储以文档为中心的XML文档。

    • The keyword indexing function of the document processing can be used to speed up search and retrieval of the documents.

      文档处理的关键字索引功能可用于加速文档的搜索和检索。

    2) Using a DBMS to store the document as data elements

    2)使用DBMS将文档存储为数据元素

    • This approach will work when we want to store the document that follows a specific XML, DTD schema.

      当我们要存储遵循特定XML DTD模式的文档时,此方法将起作用。

    • Because in such schema all will have the same structure so that one can easily design a relational database to store the leaf-level data elements within the XML documents.

      因为在这种模式下,所有文件都将具有相同的结构,所以可以轻松地设计一个关系数据库来在XML文档中存储叶级数据元素。

    • This approach basically requires a mapping algorithm to design a database schema that can work comfortably with the XML document structure which is specified in XML schema.

      该方法基本上需要一种映射算法来设计数据库模式,该数据库模式可以与XML模式中指定的XML文档结构轻松地协同工作。

    • These algorithms can be implemented either as an internal DBMS module or as a separate middleware that is not the part of DBMS.

      这些算法既可以实现为内部DBMS模块,也可以实现为单独的中间件,而不是DBMS的一部分。

    3) Designing a specialized system for storing native XML document

    3)设计一个用于存储本机XML文档的专用系统

    • Basically, we can design and implement a new database model based on the Hierarchical model such systems are basically known as NATIVE XML DBMS.

      基本上,我们可以基于Hierarchical模型设计和实现一个新的数据库模型,这样的系统基本上被称为NATIVE XML DBMS。

    • This system basically includes a data compression technique which will reduce the size of documents while storing it.

      该系统基本上包括一种数据压缩技术,该技术将在存储文档时减小文档的大小。

    • Dynamic Application Platform of eXcleon provides such facilities.

      eXcleon的动态应用程序平台提供了这样的功能。

    4) Creating or publishing customized XML documents from preexisting relational database

    4)从现有的关系数据库创建或发布自定义XML文档

    We know that there are the enormous amount of data that are already stored in relational databases and some of this data we need to be formatted as documents for exchanging or displaying over the web.

    我们知道,关系数据库中已经存储了大量数据,我们需要将其中一些数据格式化为文档,以便在Web上交换或显示。

    In this approach, we basically use a separate middleware software layer to handle the conversion needed between the XML documents and relational databases.

    在这种方法中,我们基本上使用单独的中间件软件层来处理XML文档和关系数据库之间所需的转换。

    翻译自: https://www.includehelp.com/XML/approaches-to-store-the-xml-document.aspx

    mysql存储xml文件

    展开全文
  • 我们使用xmlNewDoc()来创建XML文档,然后使用xmlNewNode(),xmlNewChild(),xmlNewProp(),xmlNewText()等函数向XML文件中添加节点及子节点,设置元素和属性,创建完毕后用xmlSaveFormatFileEnc()来保存XML文件到磁盘...

    一、创建XML文档:

    我们使用xmlNewDoc()来创建XML文档,然后使用xmlNewNode(),xmlNewChild(),xmlNewProp(),xmlNewText()等函数向XML文件中添加节点及子节点,设置元素和属性,创建完毕后用xmlSaveFormatFileEnc()来保存XML文件到磁盘(该函数可以设置保存XML文件时的编码格式)。

    示例1:

     #include <stdio.h>
    
       #include <libxml/parser.h>
    
       #include <libxml/tree.h>
    
       int main(int argc, char **argv)
    
       {
    
               xmlDocPtr doc = NULL;       /* document pointer */
    
              xmlNodePtr root_node = NULL, node = NULL, node1 = NULL;/* node pointers */
    
        // Creates a new document, a node and set it as a root node
    
              doc = xmlNewDoc(BAD_CAST "1.0");
    
              root_node = xmlNewNode(NULL, BAD_CAST "root");
    
              xmlDocSetRootElement(doc, root_node);
    
              //creates a new node, which is "attached" as child node of root_node node.
    
              xmlNewChild(root_node, NULL, BAD_CAST "node1",BAD_CAST "content of node1");
    
              // xmlNewProp() creates attributes, which is "attached" to an node.
    
              node=xmlNewChild(root_node, NULL, BAD_CAST "node3", BAD_CAST"node has attributes");
    
              xmlNewProp(node, BAD_CAST "attribute", BAD_CAST "yes");
    
              //Here goes another way to create nodes.
    
              node = xmlNewNode(NULL, BAD_CAST "node4");
    
              node1 = xmlNewText(BAD_CAST"other way to create content");
    
              xmlAddChild(node, node1);
    
              xmlAddChild(root_node, node);
    
              //Dumping document to stdio or file
    
              xmlSaveFormatFileEnc(argc > 1 ? argv[1] : "-", doc, "UTF-8", 1);
    
              /*free the document */
    
              xmlFreeDoc(doc);
    
              xmlCleanupParser();
    
              xmlMemoryDump();//debug memory for regression tests
    
              return(0);
    
       }

    二、解析XML文档

    解析文档时仅仅需要文件名并只调用一个函数,并有错误检查,常用的相关函数有xmlParseFile(),xmlParseDoc(),获取文档指针后,就可以使用xmlDocGetRootElement()来获取根元素节点指针,利用该指针就可以在DOM树里漫游了,结束后要调用xmlFreeDoc()释放。

    示例2:

     xmlDocPtr doc;   //定义解析文档指针
    
       xmlNodePtr cur; //定义结点指针(你需要它为了在各个结点间移动)
    
       xmlChar *key;
    
       doc = xmlReadFile(url, MY_ENCODING, 256); //解析文件

       /*检查解析文档是否成功,如果不成功,libxml将指一个注册的错误并停止。一个常见错误是不适当的编码。XML标准文档除了用UTF-8或UTF-16外还可用其它编码保存。如果文档是这样,libxml将自动地为你转换到UTF-8。更多关于XML编码信息包含在XML标准中。*/

     

     if (doc == NULL ) {
    
        fprintf(stderr,"Document not parsed successfully. \n");
    
            return;
    
       }
    
       cur = xmlDocGetRootElement(doc); //确定文档根元素
    
       /*检查确认当前文档中包含内容*/
    
       if (cur == NULL) {
    
            fprintf(stderr,"empty document\n");
    
            xmlFreeDoc(doc);
    
            return;
    
       } 

       /*在这个例子中,我们需要确认文档是正确的类型。“root”是在这个示例中使用文档的根类型。*/

      if (xmlStrcmp(cur->name, (const xmlChar *) "root")) {
    
        fprintf(stderr,"document of the wrong type, root node != root");
    
            xmlFreeDoc(doc);
    
            return;
    
       }
    
       cur = cur->xmlChildrenNode;
    
       while(cur!=NULL) {
    
        if ((!xmlStrcmp(cur->name, (const xmlChar *)"keyword"))) {
    
         key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
    
         printf("keyword: %s\n", key);
    
         xmlFree(key);
    
        }
    
        cur = cur->next;
    
       }
    
       xmlFreeDoc(doc);
    
    

    三、查找XML节点

    有时候对一个XML文档我们可能只关心其中某一个或某几个特定的Element的值或其属性,如果漫游DOM树将是很痛苦也很无聊的事,利用XPath可以非常方便地得到你想的Element。下面是一个自定义函数:

    示例3:

      xmlXPathObjectPtr get_nodeset(xmlDocPtr doc, const xmlChar *xpath) {
    
        xmlXPathContextPtr context;
    
        xmlXPathObjectPtr result;
    
        context = xmlXPathNewContext(doc);
    
        if (context == NULL) {
    
         printf("context is NULL\n");
    
         return NULL;
    
        }
    
        result = xmlXPathEvalExpression(xpath, context);
    
        xmlXPathFreeContext(context);
    
        if (result == NULL) {
    
         printf("xmlXPathEvalExpression return NULL\n");
    
         return NULL;
    
        }
    
        if (xmlXPathNodeSetIsEmpty(result->nodesetval)) {
    
         xmlXPathFreeObject(result);
    
         printf("nodeset is empty\n");
    
         return NULL;
    
        }
    
        return result;
    
       }
    
      
    
      在doc指向的XML文档中查询满足xpath表达式条件的节点,返回满足这一条件的节点集合查询条件xpath的写法参见xpath相关资料。在查询完毕获取结果集后,就可以通过返回的 xmlXPathObjectPtr 结构访问该节点:
    
    示例4:
    
       xmlChar *xpath = ("/root/node/[@key='keyword']");
    
       xmlXPathObjectPtr app_result = get_nodeset(doc,xpath);
    
       if (app_result == NULL) {
    
        printf("app_result is NULL\n");
    
        return;
    
       }
    
      
    
       int i = 0;
    
       xmlChar *value;
    
       if(app_result) {
    
        xmlNodeSetPtr nodeset = app_result->nodesetval;
    
        for (i=0; i < nodeset->nodeNr; i++) {
    
         cur = nodeset->nodeTab[i];    
    
         cur = cur->xmlChildrenNode;  
    
         while(cur!=NULL) {   
    
          value = xmlGetProp(cur,(const xmlChar *)"key");
    
          if (value != NULL) {
    
           printf("value: %s\n\n", d_ConvertCharset("utf-8", "GBK", (char *)value));
    
           xmlFree(value);
    
          }
    
          value = xmlNodeGetContent(cur);
    
          if (value != NULL) {
    
           printf("value: %s\n\n", d_ConvertCharset("utf-8", "GBK", (char *)value));
    
           xmlFree(value);
    
          }
    
         }
    
        }
    
        xmlXPathFreeObject (app_result);
    
       }

      通过get_nodeset()返回的结果集,我们可以获取该节点的元素及属性,也可以修改该节点的值。示例中在获取值打印的时候用到 d_ConvertCharset()函数来改变编码格式为GBK,以方便正确读取可能的中文字符。

    四、修改XML元素及属性等信息

    要修改XML文档里的元素及属性等信息,先需要解析XML文档,获得一个节点指针(xmlNodePtr node),利用该节点指针漫游DOM树,就可以在XML文档中获取,修改,添加相关信息。

    示例6:

      得到一个节点的内容:
    
        xmlChar *value = xmlNodeGetContent(node);
    
       返回值value应该使用xmlFree(value)释放内存
    
      得到一个节点的某属性值:
    
        xmlChar *value = xmlGetProp(node, (const xmlChar *)"prop1");
    
       返回值需要xmlFree(value)释放内存
    
      设置一个节点的内容:
    
        xmlNodeSetContent(node, (const xmlChar *)"test");
    
      设置一个节点的某属性值:
    
        xmlSetProp(node, (const xmlChar *)"prop1", (const xmlChar *)"v1");
    
      添加一个节点元素:
    
        xmlNewTextChild(node, NULL, (const xmlChar *)"keyword", (const xmlChar *)"test Element");
    
      添加一个节点属性:
    
        xmlNewProp(node, (const xmlChar *)"prop1", (const xmlChar
    参考:http://hi.baidu.com/valefeng/item/22199856fe25ac3694eb051d
            点击打开链接
    展开全文
  • testng使用的testng.xml文档文档类型定义文件,可用于核对xml文件文档结构及合法元素
  • XML文件

    千次下载 热门讨论 2008-05-08 09:31:08
    要读取的XML文件
  • Qt读写Xml文件,QTreeWidget显示Xml和导出Xml文件
  • XML应用开发课堂实践 软件学院 第 PAGE 1 页 = numpages 4 1 1 页 单元六 使用DOM解析XML文档课堂实践 6.2 加载XML文档 实践目的 能够使用JavaScript加载XML文档 能够调用外部JS文件XML文档 实践内容 Client.xml文档...
  • Xml Viewer (xml文档修改器)

    热门讨论 2011-08-08 14:50:23
    一款XML文档浏览器,可检测并修改XML文件的内容。
  • jsp处理xml文件的相关技术文档,有用DOM做XML处理.doc、用JDOM操作XML文.txt、在JSP开发中使用jdom解析临时存放数据的XML文件.txt、第8章_JSP实现对XML读写.pdf、从数据库Mysql读取数据转化为xml文档的Java类等,想...
  • DOM方式解析xml是先把xml文档都读到内存中,然后再用DOMAPI来访问树形结构,并获取数据的,但是这样一来,如果xml文件很大呢?手机CPU处理能力当然不能与PC机器比,因此在处理效率方面就相对差了,当然这是对于其他...
  • XML文件编辑器XMLwriter

    2009-07-18 15:07:49
    XML文件编辑器XMLwriter ,轻松编辑XML文档
  • JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
  • matlab读xml文档

    2018-08-02 16:53:05
    matlab的xml文档读实例,提供了相应的xml文档,里面有一个脚本文件,一个函数文件,直接可以用
  • 省市县XML文档.xml

    2012-04-19 11:54:33
    省市县XML文档 ,全国各省市县xml文档,可用于web前台开发
  • 编写xml文档 点击黄色小勾验证xml文档格式的正确性 验证xml文档的有效性,这里可以发现缺少对应的dtd约束 接下来根据xml生成对应的dtd文档。点击DTD/schema–>Generate DTD/schema 选择dtd,OK 选择路径,...

    新建一个xml文档,点击file–>new
    在这里插入图片描述
    默认选项OK
    在这里插入图片描述
    刚开始学习的可以先取消
    在这里插入图片描述
    编写xml文档
    在这里插入图片描述
    点击黄色小勾验证xml文档格式的正确性
    在这里插入图片描述
    验证xml文档的有效性,这里可以发现缺少对应的dtd约束
    在这里插入图片描述
    接下来根据xml生成对应的dtd文档。点击DTD/schema–>Generate DTD/schema
    在这里插入图片描述
    选择dtd,OK
    在这里插入图片描述
    选择路径,填写文件名称保存即可
    在这里插入图片描述
    保存后会弹框提示是否关联,选择是
    在这里插入图片描述
    关联成功后,再次验证xml文档正确性也就成功了

    展开全文
  • 解析XML文档 本讲大纲 1构建XML文档对象 2获取根节点 3获取子节点 构建XML文档对象 在解析XML文档前需要构建要解析的XML文件所对应的XML文档对象在获取XML文档对象时首先需要创建SAXReader对象然后调用该对象的read)...
  • 本项目的功能是上传文件 处理图片(加水印,生成缩略图,压缩图片) 生成XML文档 拆分XML文档
  • XmlValidate通过文件名或 URL 或使用目标文件扩展名列表递归搜索目录来验证单个 XML 文档。 第一个文档被检查为格式良好的 XML。 如果使用非验证解析器解析 XML 失败,则对该文件的验证将停止。 以下是使用...
  • tinyXml解析XML文件

    千次阅读 2019-06-30 22:03:11
    TinyXML解析一个XML文档,并从该文档构建可读取、修改和保存的文档对象模型(DOM)。 XML代表“可扩展标记语言”,它允许您创建您自己...所有为存储应用程序数据而创建的随机文件格式都可以全部替换为XML。所有内...

            TinyXML解析一个XML文档,并从该文档构建可读取、修改和保存的文档对象模型(DOM)。

            XML代表“可扩展标记语言”,它允许您创建您自己的文档标记。HTML在标记方面做得很好用于浏览器的文档,XML允许您定义任何类型的文档标记,例如描述组织者应用程序。XML是一种非常结构化和方便的格式。所有为存储应用程序数据而创建的随机文件格式都可以全部替换为XML。所有内容都有一个解析器。

            TinyXML设计为易于学习和快速学习。是两个.h和四个cpp文件。只需将这些添加到您的项目中就可以了。有一个示例文件xmltest.cpp可以让您开始。TinyXML是根据zlib许可证发布的,所以您可以在开放源码或商业代码中使用它。细节许可证在每个源文件的顶部。TinyXML试图成为一个灵活的解析器,但真正正确和兼容的XML输出。TinyXML应该编译任何合理的C++合规系统。它不依赖于异常或RTTI。它可以是使用或不使用STL支持编译。TinyXML完全支持UTF-8编码和前64K字符实体。

           TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。

    TinyXml中的各个基本类型之间的关系,看看这个继承图:

           TinyXML的结构及节点说明:

          DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。

     在TinyXML中,根据XML的各种元素来定义了一些类:

    TiXmlBase:整个TinyXML模型的基类。

    TiXmlAttribute:对应于XML中的元素的属性。

    TiXmlNode:对应于DOM结构中的节点。

    TiXmlComment:对应于XML中的注释

    TiXmlDeclaration:对应于XML中的申明部分,即<?versiong="1.0" ?>。

    TiXmlDocument:对应于XML的整个文档。

    TiXmlElement:对应于XML的元素。

    TiXmlText:对应于XML的文字部分

    TiXmlUnknown:对应于XML的未知部分。 

    TiXmlHandler:定义了针对XML的一些操作。

    TinyXML是个解析库,主要由DOM模型类(TiXmlBase、TiXmlNode、TiXmlAttribute、TiXmlComment、TiXmlDeclaration、TiXmlElement、TiXmlText、TiXmlUnknown)和操作类(TiXmlHandler)构成。它由两个头文件(.h文件)和四个CPP文件(.cpp文件)构成,用的时候,只要将(tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp)导入工程就可以用它的东西了。如果需要,可以将它做成自己的DLL来调用。

    https://www.cnblogs.com/whlook/p/7117306.html

    被解析的文件为test.xml,文件内容如下:

    <?xml version="1.0" encoding="GBK" ?>
    <root>
        <host checked="true" station="1001">AAA</host>
        <client>
            <name>xiaoming</name>
            <id>200801</id>
        </client>
    </root>
    

    解析该文件的C++程序如下:

    #include <stdio.h>
    #include "../tinyxml/tinyxml.h"
    
    int main()
    {
    	// 解析xml
    	TiXmlDocument xml_doc;
    	if(!xml_doc.LoadFile("test.xml"))
    	{
    		return -1;
    	}
    	
    
    	// 根节点
    	TiXmlElement* xml_root = xml_doc.RootElement();
    	if (NULL == xml_root)
    	{
    		return -1;
    	}
    
    	// 获取元素的文本与属性
    	if(0)
    	{
    		TiXmlElement* xml_host = xml_root->FirstChildElement("host");
    		const char* text = xml_host->GetText();
    		const char* aChecked = xml_host->Attribute("checked");
    		const char* aStation = xml_host->Attribute("station");
    		printf("text:%s, check:%s, station:%s\n", text, aChecked, aStation);
    	}
    
    	//
    	if(1)
    	{
    		TiXmlElement* xml_client = xml_root->FirstChildElement("client");
    
    		TiXmlElement* xml_clientId = xml_client->FirstChildElement("id");
    		TiXmlElement* xml_clientName = xml_client->FirstChildElement("name");
    
    		const char* text_name = xml_clientName->GetText();
    		printf("name = %s\n", text_name);
    
    		// ...取得id和name的文本 ...
    	}
    
    	
    	return 0;
    }
    

    解析复杂XML例子:

    https://blog.csdn.net/wcy6340/article/details/9670201

     

    展开全文
  • Qt读写Xml文件;QTreeWidget加载显示Xml文件内容;QTreeWidget项导出保存为Xml;QTreeWidget项实现可拖动
  • Java操作XML文件

    千次阅读 2019-08-30 09:21:57
    目录 一、使用DOM4j进行XML的DOM解析 1.1、使用DOM4j查询XML文档 1.2、使用DOM4j修改XML文档 1.3、使用xPath技术 ... Java中有两种解析XML文件的方式:DOM解析和SAX解析。 一、使用DOM4j进行XML的DOM解析 ...
  • 基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。
  • idea创建xml文件

    万次阅读 多人点赞 2019-06-21 08:47:31
    1、File---->Settings 2、Editor---->File And Code Templates —>...输入模板名字:Name:XML File.xml (name可以自定义) ------>后缀名extension:xml —>在面板中间输入内容: <?xml vers...
  • XML Viewer是一款XML文档浏览器,可检测并修改XML文件的内容。
  • XML文档定义分为DTD和Schema两种形式,二者都是对XML语法的约束,其本质区别在于Schema本身也是一个XML文件,可以被XML解析器解析,而且可以为XML承载的数据定义类型,约束能力较之DTD更强大。 对XML的解析主要有...
  • XML文件格式说明

    千次阅读 2020-07-22 17:22:25
    文章目录XML简介XML文件内容示例XML组成XML声明XML 元素XML命名规则XML基本语法形式良好的XML文档 XML简介  XML全称是Extensible Markup Language,中文译为可扩展的标记语言,它是SGML(标准通用标记语言)的一个...
  • 【HTML/XML 10】XML文档中的Schema文件

    千次阅读 热门讨论 2016-01-17 08:36:46
    导读:DTD是对XML文档进行有效性验证的方法之一,事实上,继DTD之后,出现了用来规范和描述XML文档的第二代标准:Schema。Schema是DTD的继承,但是也有其不同的地方,它是真正的以独立的文档存在,并且使用语XML文档...
  • c#将XML文档保存到指定的文件

    热门讨论 2012-11-28 23:38:14
    用c#程序将XML文档保存到指定的文件的代码
  • c++操作xml文件

    千次阅读 2019-06-09 12:02:11
    最近也开始慢慢学习c++的东西,今天就写写c++如何操作xml文件吧。我们使用的是tinyxml,有个小巧的库,可以生成和解析XML文档。免费开源,可以直接将源码加到项目中,适合多种平台。他的官方文档为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,686,693
精华内容 1,074,677
关键字:

xml文件