2017-05-04 50 views
0

會有什麼使用上輸入正則表達式是分析在.NET網頁API控制器XML請求下面的例子如何讀取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

沒有什麼特別之處下的根元素之外有一個註釋節點。只是實例化XML API並迭代節點... –

+0

不是真的那樣工作... – mko

+0

代碼如此其他可以幫助您深入研究它...否則,註釋交換不是有效使用時間 –

回答

1

在C#中使用LinqToXml你可以得到意見如下:

var xml = XDocument.Load("test.xml"); 

var comments = xml.DescendantNodes().OfType<XComment>(); 

foreach (var comment in comments) 
    Console.WriteLine(comment.Value); 

請注意,您必須對使用XDocument

如果使用XElement,它將僅從文檔的根元素接收數據。

如果你想根元素後,只得到評論,請使用以下代碼:

var comments = xml.Root.NodesAfterSelf().OfType<XComment>(); 
0

我試圖使用xpath/comment()使用以下代碼訪問評論節點。我能夠成功地打印評論節點。我認爲任何正常運行的xml lib也應該做同樣的事情。

公共靜態無效的主要(字串[] 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)); 
    }