本文整理汇总了C++中XmlNode::Node方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlNode::Node方法的具体用法?C++ XmlNode::Node怎么用?C++ XmlNode::Node使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlNode
的用法示例。
在下文中一共展示了XmlNode::Node方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AsXML
String AsXML(const XmlNode& node, dword style)
{
StringBuffer r;
if(style & XML_HEADER)
r << XmlHeader();
if(style & XML_DOCTYPE)
for(int i = 0; i < node.GetCount(); i++) {
const XmlNode& m = node.Node(i);
if(m.GetType() == XML_TAG) {
r << XmlDocType(m.GetText());
break;
}
}
style &= ~(XML_HEADER|XML_DOCTYPE);
switch(node.GetType()) {
case XML_PI:
r << "<?" << node.GetText() << "?>\r\n";
break;
case XML_DECL:
r << "<!" << node.GetText() << ">\r\n";
break;
case XML_COMMENT:
r << "<!--" << node.GetText() << "-->\r\n";
break;
case XML_DOC:
for(int i = 0; i < node.GetCount(); i++)
r << AsXML(node.Node(i), style);
break;
case XML_TEXT:
r << DeXml(node.GetText());
break;
case XML_TAG:
XmlTag tag(node.GetText());
for(int i = 0; i < node.GetAttrCount(); i++)
tag(node.AttrId(i), node.Attr(i));
if(node.GetCount()) {
StringBuffer body;
for(int i = 0; i < node.GetCount(); i++)
body << AsXML(node.Node(i), style);
r << tag(~body);
}
else
r << tag();
}
return r;
}
示例2: Generate
bool MSBuild_ProjectFile::Generate(
DatabaseFile& databaseFile,
WorkspaceFile& workspaceFile,
ProjectFile& projectFile,
IdeHelper::BuildProjectMatrix& buildMatrix
)
{
Platform::Path solutionDirectory =
workspaceFile.Get_Workspace_Location();
Platform::Path projectDirectory =
projectFile.Get_Project_Location();
Platform::Path projectLocation =
projectDirectory.AppendFragment(
projectFile.Get_Project_Name() + ".vcxproj", true);
std::vector<std::string> configurations =
workspaceFile.Get_Configurations_Configuration();
std::vector<EPlatform> platforms =
workspaceFile.Get_Platforms_Platform();
std::string projectGuid = Strings::Guid({
workspaceFile.Get_Workspace_Name(),
projectFile.Get_Project_Name() });
// Files.
std::vector<std::string> allFiles;
std::vector<Platform::Path> baseFiles = projectFile.Get_Files_File();
for (Platform::Path& path : baseFiles)
{
std::string relativePath = "$(SolutionDir)" +
solutionDirectory.RelativeTo(path).ToString();
allFiles.push_back(relativePath);
}
XmlNode root;
// Header
root.Node("?xml")
.Attribute("version", "1.0")
.Attribute("encoding", "utf-8");
XmlNode& project =
root.Node("Project")
.Attribute("DefaultTargets", "Build")
.Attribute("ToolsVersion", "")
.Attribute("xmlns", "http://schemas.microsoft.com/developer/msbuild/2003");
// Build Matrix
XmlNode& projectConfig =
project.Node("ItemGroup")
.Attribute("Label", "ProjectConfiguration");
for (auto matrix : buildMatrix)
{
std::string platformId = MSBuild::GetPlatformID(matrix.platform);
XmlNode& buildConfig =
projectConfig.Node("ProjectConfiguration")
.Attribute("Include", "%s|%s", matrix.config.c_str(), platformId.c_str());
buildConfig.Node("Configuration").Value("%s", matrix.config.c_str());
buildConfig.Node("Platform").Value("%s", platformId.c_str());
}
// Globals.
XmlNode& globals =
project.Node("PropertyGroup")
.Attribute("Label", "Globals");
globals.Node("ProjectGuid").Value("%s", projectGuid.c_str());
globals.Node("Keyword").Value("MakeFileProj");
// Undocumented hackery going on here:
// As we have our own custom platforms, and we are building them through makefiles we are just
// going to silence the "platform not found" warnings visual studio gives. It seems preferable
// to creating a bunch of unneccessary project property files and tampering with visual studio.
globals.Node("PlatformTargetsFound").Value("True");
globals.Node("PlatformPropsFound").Value("True");
globals.Node("ToolsetTargetsFound").Value("True");
// Imports
project.Node("Import")
.Attribute("Project", "$(VCTargetsPath)\\Microsoft.Cpp.Default.props");
// Property Grid
for (auto matrix : buildMatrix)
{
std::string platformId = MSBuild::GetPlatformID(matrix.platform);
XmlNode& propertyGroup =
project.Node("PropertyGroup")
.Attribute("Condition", "'$(Configuration)|$(Platform)'=='%s|%s'", matrix.config.c_str(), platformId.c_str())
.Attribute("Label", "Configuration");
propertyGroup.Node("ConfigurationType").Value("Makefile");
//.........这里部分代码省略.........