Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何让xerces-c以最小的大小开销编写名称空间?_Xml_Xerces C - Fatal编程技术网

Xml 如何让xerces-c以最小的大小开销编写名称空间?

Xml 如何让xerces-c以最小的大小开销编写名称空间?,xml,xerces-c,Xml,Xerces C,我用xerces-C3.2.1编写了一个xml文件 <?xml version="1.0" encoding="UTF-16" standalone="yes" ?> <Test xmlns="my_namespace" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc

我用xerces-C3.2.1编写了一个xml文件

<?xml version="1.0" encoding="UTF-16" standalone="yes" ?>
<Test xmlns="my_namespace" 
      xmlns:xml="http://www.w3.org/XML/1998/namespace" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="my_namespace myschema.xsd">
        <Elem />
</Test>
<?xml version="1.0" encoding="UTF-16" standalone="yes" ?>
<Test xmlns="my_namespace" 
      xmlns:xml="http://www.w3.org/XML/1998/namespace" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="my_namespace myschema.xsd">
         <Elem xmlns:myprefix="my_namespace" myprefix:dim="..."/>
</Test>
在每个使用dim属性的元素上使用名称空间声明,这是不好的,因为出于文件大小的原因,我希望xerces-c能够像这样编写文件

金色的

前缀所有其他元素myprefix:elem1myprefix:elem2,除了带有我的dim的元素,这是一个令人头痛的问题


我怎样才能强迫xerces-c按照我的意愿编写最少的名称空间声明和前缀,如黄金一词

最后,获得黄金一词的诀窍是:

将前缀添加到元素名(或属性名)中,例如L“my_prefix:Elem”(附加到名称空间中)

这将在生成的XML文件中节省空间,但在生成XML的代码中需要更多空间,并且需要更多代码,因为前缀不应硬编码

<Test xmlns="my_namespace" 
      xmlns:myprefix="my_namespace" 
      xmlns:xml="http://www.w3.org/XML/1998/namespace" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="my_namespace myschema.xsd">
         <Elem myprefix:dim="..."/>
</Test>
    <Test xmlns="my_namespace" 
      xmlns:myprefix="my_namespace" 
      xmlns:xml="http://www.w3.org/XML/1998/namespace" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="my_namespace myschema.xsd">
         <myprefix:Elem1 ../>
         <myprefix:Elem2 ../>
         <Elem myprefix:dim="..."/>
</Test>
DOMElement * e4 = doc->createElementNS(defaultNS, (const XMLCh*)L"my_prefix:Elem");
root->appendChild(e4);