Java 我们可以使用协议缓冲区用名称空间序列化xml吗?
我已经为下面的示例xml创建了原型文件,并且能够序列化它 XMLJava 我们可以使用协议缓冲区用名称空间序列化xml吗?,java,serialization,protocol-buffers,protobuf-net,xmlserializer,Java,Serialization,Protocol Buffers,Protobuf Net,Xmlserializer,我已经为下面的示例xml创建了原型文件,并且能够序列化它 XMLabc123a 原型 package com.example; option java_package = "com.example"; option java_outer_classname = "EmployeeProtoClass"; message Person { required string name = 1; required int32 id = 2; optional string email =
abc123a
原型
package com.example;
option java_package = "com.example";
option java_outer_classname = "EmployeeProtoClass";
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
}
但我的问题是,如果我的XML有下面这样的名称空间,那么如何为它创建proto文件?我创建了如下内容,但在转换过程中出现错误(缺少字段名)
带命名空间的XML(EmployeeIN.XML)
有人能建议我们如何使用协议缓冲区对其进行序列化吗?您定义了名称空间的XML不正确,因为名称空间本身没有正确声明。如果您仅使用
xmlns
,它将声明与XML标记相对应的默认名称空间,而不使用任何前缀,这里您的名称空间是in
,因此它应该声明为xmlns:in
,因此它应该是xmlns:in=”http://employee.in.com“
谢谢@Nicolas的评论。。这只是带有名称空间的示例xml。我的实际问题是如何使用协议缓冲区序列化具有名称空间的xml?协议缓冲区是否支持使用命名空间对xml进行序列化?您应该包括用于序列化的代码。如果我没有错,则使用协议缓冲区时存在序列化问题。我说得对吗?@Jayesh,是的,这是序列化问题。若XML有名称空间,那个么我们就不能使用协议缓冲区进行序列化。
<in:Employee xmlns:in="http://employee.in.com">
<in:name>abc</in:name>
<in:id>123</in:id>
<in:email>a</in:email>
</in:Employee>
package com.example;
option java_package = "com.example";
option java_outer_classname = "EmployeeINProtoClass";
message Person {
required string in:name = 1;
required int32 in:id = 2;
optional string in:email = 3;
}