簡體   English   中英

使用LINQ,我將如何檢查XML行是否包含一個字段,以及是否確實在同一行的另一個字段中檢查值

[英]Using LINQ how would I check if a XML row contains a field and if it does check a different field on the same row for a value

我有一個場景,一個應用程序向我吐出一些XML,而我對其下面的結構沒有任何控制權。

<?xml version="1.0"?>
<DATASET xmlns:dt="urn:schemas-microsoft-com:datatypes">
    <ROW> 
        <OccNumber >test</OccNumber>
        <OccId >Test2</OccId>
        <OccTime >2017/01/26 09:38</OccTime>
        <OccSummary >Test worked</OccSummary>
        <DATASET>
            <ROW>
                <PID>123456</PID>
                <CID >12345678</CID>
            </ROW>
            <ROW>
                <PID>569867</PID>
                <CID>37576334</CID>
            </ROW>
        <DATASET>
            <ROW>
                <ReportId >4345454</ReportId>
                <ReportTime >2018/02/15 12:55</ReportTime>
                <NumberType4 />
                <accepted >Yes</accepted>
                <cond1>No </Cond1>
            </ROW>
        </DATASET>
    </ROW>
</DATASET>

因此,我需要做的基本上是在我找到標簽時進行計數,並且在同一行中標簽的值為“是”。 如果可能的話,我想用LINQ做到這一點。

編輯:要更清楚一點。 我以為是因為Dataset和Row標簽是重復的,並且沒有唯一的名稱,所以我無法確定要檢查我的計數的特定名稱。 我所知道的是,ACCEPTED和COND1標簽對於我要計數的數據集和行是唯一的。 我還需要檢查兩個字段中的值,因為這是我發現告訴我是否應該對行進行計數的組合。

您的XML無效(缺少DATASET元素之一上的結束標記,而cond1元素中的大小寫不同)。 以下是一些經過糾正的XML,帶有可用於測試的其他節點,以及其下的一些代碼顯示了如何選擇感興趣的節點。

<?xml version="1.0"?>
<DATASET xmlns:dt="urn:schemas-microsoft-com:datatypes">
    <ROW> 
        <OccNumber >test</OccNumber>
        <OccId >Test2</OccId>
        <OccTime >2017/01/26 09:38</OccTime>
        <OccSummary >Test worked</OccSummary>
       <DATASET>
            <ROW>
                <ReportId >4345454</ReportId>
                <ReportTime >2018/02/15 12:55</ReportTime>
                <NumberType4 />                
                <cond1>No</cond1>
            </ROW>
        </DATASET>      
        <DATASET>
            <ROW>
                <ReportId >4345454</ReportId>
                <ReportTime >2018/02/15 12:55</ReportTime>
                <NumberType4 />
                <accepted>Yes</accepted>
                <cond1>No</cond1>
            </ROW>
        </DATASET>              
        <DATASET>
            <ROW>
                <PID>123456</PID>
                <CID >12345678</CID>
            </ROW>
            <ROW>
                <PID>569867</PID>
                <CID>37576334</CID>
            </ROW>
        </DATASET>
        <DATASET>
            <ROW>
                <ReportId >4345454</ReportId>
                <ReportTime >2018/02/15 12:55</ReportTime>
                <NumberType4 />
                <accepted>Yes</accepted>
                <cond1>No</cond1>
            </ROW>
        </DATASET>
    </ROW>
</DATASET>

碼:

var xdoc = new XmlDocument();
xdoc.LoadXml("YOUR XML STRING HERE");
var nodes = xdoc.SelectNodes("//DATASET/ROW[accepted='Yes' and cond1='No']");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM