Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
TXMLDocument->;子节点->;Add()创建不需要的空xmlns属性_Xml_C++builder - Fatal编程技术网

TXMLDocument->;子节点->;Add()创建不需要的空xmlns属性

TXMLDocument->;子节点->;Add()创建不需要的空xmlns属性,xml,c++builder,Xml,C++builder,这让我快发疯了。我需要将几个XML类组合成一个最终文档。它们都是由联邦政府定义的。因此,在用适当的值填充每个xml类(使用xml数据绑定向导创建)之后,我需要插入几个类作为子节点。不幸的是,我这样做会创建一个空的(而不是联邦规范)xmlns=“”属性。以下是我代码的要点(删除了不相关的部分) 这非常有效,除了ReturnHeader子节点得到一个不需要的xmlns=”“属性,如下所示: <?xml version="1.0"? encoding="UTF-8"?> <Retur

这让我快发疯了。我需要将几个XML类组合成一个最终文档。它们都是由联邦政府定义的。因此,在用适当的值填充每个xml类(使用xml数据绑定向导创建)之后,我需要插入几个类作为子节点。不幸的是,我这样做会创建一个空的(而不是联邦规范)xmlns=“”属性。以下是我代码的要点(删除了不相关的部分)

这非常有效,除了ReturnHeader子节点得到一个不需要的xmlns=”“属性,如下所示:

<?xml version="1.0"? encoding="UTF-8"?>
<Return returnVersion="2015v3.0" xmlns="http://www.irs.gov/efile" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:efile="http://www.irs.gov/efile">
    <ReturnHeader xmlns="" binaryAttachmentCnt="0">
    // details removed
    </ReturnHeader>
</Return>

将名称空间添加到根文档时,需要使用
DeclareNamespace()
而不是
SetAttribute()
,以便它了解名称空间并将其传播到子节点。但是,首先为什么要创建和合并两个单独的文档?为什么
ReturnHeader
是它自己的文档?首先,您应该创建
ReturnHeader
作为
Return
的子级,然后它可以继承
Return
的一个名称空间(您在调用
IXMLNode::AddChild()
时指定名称空间。您应该使用
NewXMLDocument()
而不是
newTXMLDocument())
。我认为XML数据绑定向导在这种情况下对您没有帮助。至少,您可能需要调整生成的类,以便为它们分配适当的名称空间。但我真的不认为
ReturnHeader
应该是它自己的文档,它应该作为
Return
的子文档创建。
<?xml version="1.0"? encoding="UTF-8"?>
<Return returnVersion="2015v3.0" xmlns="http://www.irs.gov/efile" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:efile="http://www.irs.gov/efile">
    <ReturnHeader xmlns="" binaryAttachmentCnt="0">
    // details removed
    </ReturnHeader>
</Return>
IRSReturn->Options = IRSReturn->Options >> doAutoPrefix;