对于以下示例,在.net web api控制器上解析xml请求中的注释的好方法
<?xml version="1.0"?>
<Objects>
<GUID-bf2401c0-ef5e-4d20-9d20-a2451a199362>
<info job="SAVE" person="Joe" />
<info job="SAVE" person="Sally" />
</GUID-bf2401c0-ef5e-4d20-9d20-a2451a199362>
<GUID-bf2401c0-ef5e-4d20-9d20-a583284112>
<info job="SAVE" person="John" />
<info job="SAVE" person="Julie" />
</GUID-bf2401c0-ef5e-4d20-9d20-a5844113284112>
</Objects>
<!--Comment about something-->
在输入流上使用正则表达式是唯一的选择吗?
答案 0 :(得分:1)
在使用LinqToXml的C#中,您可以获得如下评论:
__openerp__.py
请注意,您必须使用 depends : ['stock',.....]
。
如果您使用var xml = XDocument.Load("test.xml");
var comments = xml.DescendantNodes().OfType<XComment>();
foreach (var comment in comments)
Console.WriteLine(comment.Value);
,它将仅从文档的根元素接收数据。
如果您只想在根元素后面获得注释,请使用以下代码:
XDocument
答案 1 :(得分:0)
我尝试使用xpath / comment()使用以下代码访问comment节点。我能够成功打印出注释节点。我认为任何正常运行的xml lib也应该做同样的事情。
public static void main(String [] args)抛出VTDException {
String s = "<?xml version=\"1.0\"?>"+
"<Objects>"+
"<GUID-bf2401c0-ef5e-4d20-9d20-a2451a199362>"+
"<info job=\"SAVE\" person=\"Joe\" /> " +
"<info job=\"SAVE\" person=\"Sally\" /> " +
"</GUID-bf2401c0-ef5e-4d20-9d20-a2451a199362>"+
"<GUID-bf2401c0-ef5e-4d20-9d20-a583284112>"+
"<info job=\"SAVE\" person=\"John\" /> " +
"<info job=\"SAVE\" person=\"Julie\" /> " +
"</GUID-bf2401c0-ef5e-4d20-9d20-a583284112>"+
"</Objects>"+
"<!--Comment about something-->";
VTDGen vg = new VTDGen();
vg.setDoc(s.getBytes());
vg.parse(false);
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath("/comment()");
int i=0;
while((i=ap.evalXPath())!=-1){
System.out.println("---->"+vn.toString(i));
}