C++でxercesを使用してSOAP WSDLを作成しようとしています。 XMLを作成して1つのファイルに入れたいだけです。Xerces-Cがルート名にコロンを入れるのに失敗しました
私は、XML文書
pDomDocument = p_DOMImplementation->createDocument("http://schemas.xmlsoap.org/soap/envelope/",
convertStringToXmlCh("soapenv:Envelope"),
0);
を作成するためのコードスニペットの下に使用しています。しかし.Exceptionを実行している間にこの行は例外をスローして、XML作成中:「メッセージでキャッチDOM例外:無効または不正なXML文字を」。
また、my xmlには、デフォルトの名前空間から3つの名前空間があります。 xercesを使ってこれをどのように追加できますか?
ただし、createDocument関数のルート名からコロン(:)を削除すると、フローが実行されます。 xercesを介してXML文書に名前空間の名前を付ける方法を教えてください。
Googleで多くの検索を成功させました。
編集1:
DOMImplementation* p_DOMImplementation = NULL;
p_DOMImplementation = DOMImplementationRegistry::getDOMImplementation(XMLString::transcode("core"));
DOMDocument* pDomDocument=NULL;
try
{
pDomDocument = p_DOMImplementation->createDocument(convertStringToXmlCh(uri), //Root element namespace URI
convertStringToXmlCh(rootNode), // Root element name
0); //Document type (DTD)
}
catch(DOMException& e)
{
BL_LOG_MSG(BL_FATAL,"Caught dom exception with message :<1>",XMLString::transcode(e.getMessage()))
return NULL;
}
編集2:
int main()
{
DOMImplementation* p_DOMImplementation = NULL;
XMLPlatformUtils::Initialize();
p_DOMImplementation = DOMImplementationRegistry::getDOMImplementation(convertStringToXmlCh("Core"));
DOMDocument* pDomDocument=NULL;
try
{
pDomDocument = p_DOMImplementation->createDocument(convertStringToXmlCh("http://schemas.xmlsoap.org/soap/envelope/"), //Root element namespace URI
convertStringToXmlCh("soapenv:envelope"), // Root element name
NULL); //Document type (DTD)
}
catch(DOMException& e)
{
cout <<"Caught xception:"<<e.getMessage();
return NULL;
}
catch(...)
{
cout <<"Caught xception:";
return NULL;
}
if(pDomDocument == NULL)
{
return NULL;
cout<<"NULL returned";
}
DOMElement* pRootElement = pDomDocument->getDocumentElement();
addAttributeToDomElementNS(pRootElement,"xmlns:typ","http://abcd.fg/V1/types");
char* path = "https://stackoverflow.com/users/gen/app/mayank.xml";
SerializeXmlWriter(pDomDocument,path);
return 0;
}
例外の下の取得:「キャッチxception:無効または不正なXML文字の下に
は私の正確なコードはまだ例外になっています"
デフォルトでは、実装は名前空間を認識していない可能性があります。実装をどのように作成しますか? –
'getDOMImplementation(XMLString :: transcode(" Core XML ")'は、名前空間をサポートしているかどうかを調べるために '' Core''だけが名前空間をサポートしているとは思わない –
' ) 'は、DOM Level 1.0に名前空間のサポートが含まれていないので、名前空間が確実にサポートされる方法です。 –