Java - 如何仅从 FileDescriptorProto 获取消息正文
Java - How to get only message body from FileDescriptorProto
我正在尝试打印 proto 文件的消息正文内容。但是我下面的代码也在打印我不想要的导入详细信息。关于如何过滤此内容以便仅打印消息内容的任何建议。
FileInputStream fin = new FileInputStream("mymessages.desc");
Descriptors.FileDescriptorSet set = Descriptors.FileDescriptorSet.parseFrom(fin);
for(FileDescriptorProto fileDesc : set.getFileList()){
List<DescriptorProto> descList = fileDesc.getMessageTypeList();
for(DescriptorProto desc : descList ){
System.out.Println(desc) ; // print all proto info including the imported field as well as message
}
}
}
我的原型文件
syntax = "proto3"
import "validate.proto";
message User{
string firstName = 1;
string lastName = 2;
}
您可以删除 header 行:
System.out.println(desc.replaceAll("(?sm)\A.*?(?=^message)", ""));
正则表达式 (?sm)\A.*?(?=^message)
匹配从开始到但不包括以 message
开头的第一行的所有内容,该行被替换为空白(即删除)。
我正在尝试打印 proto 文件的消息正文内容。但是我下面的代码也在打印我不想要的导入详细信息。关于如何过滤此内容以便仅打印消息内容的任何建议。
FileInputStream fin = new FileInputStream("mymessages.desc");
Descriptors.FileDescriptorSet set = Descriptors.FileDescriptorSet.parseFrom(fin);
for(FileDescriptorProto fileDesc : set.getFileList()){
List<DescriptorProto> descList = fileDesc.getMessageTypeList();
for(DescriptorProto desc : descList ){
System.out.Println(desc) ; // print all proto info including the imported field as well as message
}
}
}
我的原型文件
syntax = "proto3"
import "validate.proto";
message User{
string firstName = 1;
string lastName = 2;
}
您可以删除 header 行:
System.out.println(desc.replaceAll("(?sm)\A.*?(?=^message)", ""));
正则表达式 (?sm)\A.*?(?=^message)
匹配从开始到但不包括以 message
开头的第一行的所有内容,该行被替换为空白(即删除)。