xml回転htmlでのラベル処理

2942 ワード

作業中にxsltでxmlをhtmlに変換する必要があり、結果的にhtmlにフォーマットされたラベルが必要になります.そうしないと()htmlのロードにエラーが発生します.これにより、
ラベルの処理中にも
キューが発生します.これにより、

などの改行が1つ多くなります.



hello
html


xmlの
ラベルを
に変更する必要があります.


変換方法を紹介する:

void Ctest06072View::OnTest()
{
	// TODO: 在此添加命令处理程序代码
	MSXML2::IXMLDOMDocumentPtr xmlTree;
	HRESULT hr = xmlTree.CreateInstance(__uuidof(MSXML2::DOMDocument60));
	if(FAILED(hr))
		return;
	xmlTree->load("d:\\test.xml");
	SaveAsHtml(xmlTree, _T("d:\\test.html"), true);
}

bool Ctest06072View::SaveAsHtml(MSXML2::IXMLDOMDocumentPtr xmlTree, const wchar_t* cszFileName, bool bIndentation /*= true*/)const
{
	try
	{
		if (bIndentation)
		{
			// Use xslt to indent the output xml
			MSXML2::IXMLDOMDocument2Ptr pXSLTIndenter;
			_bstr_t bstrXSLTIndenter = 
				L"
" L"
" L"
" L"
" L"

"; if (FAILED(pXSLTIndenter.CreateInstance(__uuidof(MSXML2::DOMDocument60)))) return false; if (!pXSLTIndenter->loadXML(bstrXSLTIndenter)) return false; std::wstring wstrResult = xmlTree->transformNode(pXSLTIndenter); if (wstrResult.empty()) return false; // Create another tree to write out the indented xml MSXML2::IXMLDOMDocumentPtr treeAnother; HRESULT hr = treeAnother.CreateInstance(__uuidof(MSXML2::DOMDocument60)); if(FAILED(hr)) return false; if (!treeAnother->loadXML(wstrResult.c_str())) return false; //// Write process instruction //CXMLElement elementRoot = treeAnother.GetRootElement(); //CXMLPI xmlPI = treeAnother.CreateProcessingInstruction(L"xml", L"version=\"1.0\" encoding=\"utf-8\""); //treeAnother.InsertChildBefore(xmlPI, elementRoot); return SUCCEEDED(treeAnother->save(_variant_t(cszFileName))); } else { return SUCCEEDED(xmlTree->save(_variant_t(cszFileName))); } } catch (_com_error e) { return false; } }

参考:https://stackoverflow.com/questions/14567794/using-br-tag-within-xml-for-xslt


https://www.oxygenxml.com/forum/topic5818.html


なんと何ヶ月もブログを書いていないので、プログラマーであることを忘れてしまいました.