0

我正在尝试做 xxxxx,但遇到 xxxxxxxxx 的问题。我已经在互联网上搜索过,但没有找到任何解决方案。主要是我想使用 xmltextwriter 将命名空间写为 URL。内容应如下所示,

**<!-- language-all: lang-xml -->

    <?xml version="1.0" encoding="UTF-8"?>
    <book
        xmlns="http://schemas.dmtf.org/ovf/environment/1"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:oe="http://schemas.dmtf.org/ovf/environment/1"
        oe:id="">
    </book>
  **

代码在这里,

int main()
{
  XmlWriter testWriter;
  testWriter.StartWriting("test.xml");
  testWriter.StartDocument("1.0","UTF-8");

  testWriter.StartElement("book");

  testWriter.StartIndenting();

  testWriter.AddAttributeNS("xmlns", "http://schemas.dmtf.org/ovf/environment/1", "", "http://schemas.dmtf.org/ovf/environment/1");
  testWriter.AddAttributeNS("xmlns", "http://www.w3.org/2001/XMLSchema-instance", "xsi", "http://www.w3.org/2001/XMLSchema-instance");
  testWriter.AddAttributeNS("xmlns", "http://schemas.dmtf.org/ovf/environment/1", "oe", "http://www.w3.org/2001/XMLSchema-instance");
  testWriter.AddAttributeNS("oe", ":", "id", "");

  testWriter.EndElement();
  testWriter.StopWriting();

  std::string buf;
  testWriter.xml_to_string(buf);
  return 0;
}

bool StartElement(const std::string& element_name) {
       return xmlTextWriterStartElement(writer_,
                                     BAD_CAST element_name.c_str()) >= 0;
}

bool XmlWriter::AddAttributeNS(const std::string& name,
                        const std::string& value,
                        const std::string& prefix,
                        const std::string& namespaceURI )
{

      if(namespaceURI != "")
         return xmlTextWriterWriteAttributeNS (writer_,
                                            BAD_CAST prefix.c_str(),
                                            BAD_CAST name.c_str(),
                                            BAD_CAST namespaceURI.c_str(),
                                            BAD_CAST value.c_str()) >= 0;
       else
         return xmlTextWriterWriteAttributeNS (writer_,
                                            BAD_CAST prefix.c_str(),
                                            BAD_CAST name.c_str(),
                                            NULL,
                                            BAD_CAST value.c_str()) >= 0;


}
4

0 回答 0