C++ 使用C++;
我的XML文件有:C++ 使用C++;,c++,xml,C++,Xml,我的XML文件有: XML元数据 我正在这个文件中搜索一个标记,开始标记和结束标记之间的文本必须打印在控制台上。i、 e.在这种情况下,我希望在控制台上打印xmlMetadata。同样,如果它在同一文件中遇到另一个标记,它应该在文件中进一步打印 这是我的代码,但它正在打印整个文件的内容: { string line="< Package >"; ifstream myfile (xmlFileName); //xmlFileName is xml file in
{
string line="< Package >";
ifstream myfile (xmlFileName); //xmlFileName is xml file in which search is to done
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
std::cout<<line<< endl;
}
myfile.close();
}
else cout << "Unable to open file";
}
{
字符串行=“”;
ifstream myfile(xmlFileName);//xmlFileName是要进行搜索的xml文件
如果(myfile.is_open())
{
while(myfile.good())
{
getline(myfile,line);
标准::cout
XML元数据
xmlMetadata.h
C:\Dependency\xmlMetadata\xmlMetadata.h
xmlMetadata.cpp
C:\Dependency\xmlMetadata\xmlMetadata.cpp
xmlMetadata1
xmlmata1.h
C:\Dependency\xmlMetadata\xmlmata1.h
xmlMetadata1.cpp
C:\Dependency\xmlmata\xmlmata1.cpp
Getline不搜索行,它只是将每行读入变量“line”,然后您必须在该“line”中搜索所需的文本
size_t found=line.find("Package");
if (found!=std::string::npos) {
cout << line;
size\u t found=line.find(“包”);
如果(找到!=std::string::npos){
cout一个文件上的一行标记很难描述为XML。无论如何,如果您真的想解析XML文件,那么使用解析器库可以轻松地完成这项工作,例如。是一个很好的资源
下面的代码是我尝试读取以下XML的代码(是的,XML文件必须有头):
文件:demo.xml
<?xml version="1.0" encoding="utf-8"?>
<rootnode version="1.0" type="example">
<Package> xmlMetadata </Package>
</rootnode>
<? xml version="1.0" ?>
<fileStructure>
<Main_Package>
File_Navigate
</Main_Package>
<Dependency_Details>
<Dependency>
<Package>
xmlMetadata
</Package>
<Header>
xmlMetadata.h
</Header>
<Header_path>
C:\Dependency\xmlMetadata\xmlMetadata.h
</Header_path>
<Implementation>
xmlMetadata.cpp
</Implementation>
<Implementation_path>
C:\Dependency\xmlMetadata\xmlMetadata.cpp
</Implementation_path>
</Dependency>
<Dependency>
<Package>
xmlMetadata1
</Package>
<Header>
xmlMetadata1.h
</Header>
<Header_path>
C:\Dependency\xmlMetadata\xmlMetadata1.h
</Header_path>
<Implementation>
xmlMetadata1.cpp
</Implementation>
<Implementation_path>
C:\Dependency\xmlMetadata\xmlMetadata1.cpp
</Implementation_path>
</Dependency>
</Dependency_Details>
</fileStructure>
输出:
xmlMetadata
xmlMetadata1
xmlMetadata
这不是解析XML文件的方式,但由于您不想使用解析器库,因此此代码可能会帮助您开始
文件:demo.xml
<?xml version="1.0" encoding="utf-8"?>
<rootnode version="1.0" type="example">
<Package> xmlMetadata </Package>
</rootnode>
<? xml version="1.0" ?>
<fileStructure>
<Main_Package>
File_Navigate
</Main_Package>
<Dependency_Details>
<Dependency>
<Package>
xmlMetadata
</Package>
<Header>
xmlMetadata.h
</Header>
<Header_path>
C:\Dependency\xmlMetadata\xmlMetadata.h
</Header_path>
<Implementation>
xmlMetadata.cpp
</Implementation>
<Implementation_path>
C:\Dependency\xmlMetadata\xmlMetadata.cpp
</Implementation_path>
</Dependency>
<Dependency>
<Package>
xmlMetadata1
</Package>
<Header>
xmlMetadata1.h
</Header>
<Header_path>
C:\Dependency\xmlMetadata\xmlMetadata1.h
</Header_path>
<Implementation>
xmlMetadata1.cpp
</Implementation>
<Implementation_path>
C:\Dependency\xmlMetadata\xmlMetadata1.cpp
</Implementation_path>
</Dependency>
</Dependency_Details>
</fileStructure>
谢谢Martin,我尝试了上面的方法,但是它在命令行上返回了我的“Package”。我想要后面的文本,我现在正在尝试使用substr()来处理它.嘿,卡尔,谢谢你的帮助。但实际上我不能在这个程序中使用任何构建模块/解析器,如Rapidxml或Tinyxml。我需要自己的。而且xml不是一个标记xml,它有很多标记…我在这里显示它并不是为了让我的查询更简单。:)好的,让我指出一些明显的东西,可以帮助你解析它tring:标签上没有空格!
应该是
。明白了吗?是的,我在使用它时没有空格,但是如果我以相同的方式在这里发布它,那么它就不会显示为标签…所以我在两个标签之间包含空格…这只是因为你没有正确地格式化代码。我编辑了你的帖子,为你做了。我决定了我想把这段代码留在这里,因为它可以工作。其他人可能会发现这种方法很有用。
xmlMetadata
xmlMetadata1