TXMLDocument-> ChildNodes-> Add()创建不需要的空xmlns属性

时间:2015-10-02 20:49:46

标签: xml c++builder

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

IRSReturn = new TXMLDocument(GetWindow());
IRSReturn->DOMVendor = GetDOMVendor("MSXML"); // NOT cross platform compatible

IRSReturnRoot = GetReturn(IRSReturn);

IRSReturn->Version = "1.0";
IRSReturn->Encoding = "UTF-8";
IRSReturnRoot->returnVersion = "2015v3.0";
IRSReturnRoot->SetAttribute("xmlns", eReturn_TargetNamespace);
IRSReturnRoot->SetAttribute("xmlns:xsd", eReturn_Schema);
IRSReturnRoot->SetAttribute("xmlns:efile", eReturn_TargetNamespace);

IRSReturnHeader = new TXMLDocument(GetWindow());
IRSReturnHeader->DOMVendor = GetDOMVendor("MSXML"); // NOT cross platform compatible

IRSRetHeadRoot = GetReturnHeader(IRSReturnHeader);

// Fill out IRSRetHeadRoot fields ...

IRSReturnRoot->ChildNodes->Add(IRSReturnHeader->DocumentElement);
IRSReturn->XML->Text = FormatXMLData(IRSReturn->XML->Text);
IRSReturn->Active = true;

IRSReturn->SaveToFile("IRSReturnTest.xml");

完全 除了 后,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>

如何在添加后删除不需要的命名空间属性,或者更好地保持Add()方法不首先添加它?

(我尝试使用下面的代码关闭doAutoPrefix选项,但似乎没有任何区别。)

IRSReturn->Options = IRSReturn->Options >> doAutoPrefix;

0 个答案:

没有答案