xml文件读写(C#)

```markup
```handlebars
<?xml version="1.0" encoding="utf-8"?>
<PETGantrySimulator>    
  <Product type="uMI550"> 
    <ScanMode type="Coincidence">     
      <SystemStatus>D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI550\CoincidenceSystemStatus\SystemStatusData.xml</SystemStatus> 
    </ScanMode>  
    <ScanMode type="Single"> 
      <SystemStatus>D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI550\SingleSystemStatus\SystemStatusData.xml</SystemStatus> 
    </ScanMode>  
    <SystemMonitorStatus>D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI550\SymInfo\GCCSYM.xml</SystemMonitorStatus>  
    <OverTempStatus>D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI550\SymInfo\SymInfoNode.xml</OverTempStatus>  
    <Protocols> 
      <Protocol type="PETTOFCalibrationphantom"> 
        <RawData bedNum="1"> 
          <Bed index="0">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI550\CoincidenceRawData\TOF\Coincidence_RawData</Bed> 
        </RawData> 
      </Protocol>  
      <Protocol type="PETLUTScan"> 
        <RawData bedNum="1"> 
          <Bed index="0">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI550\SingleAcqRawData\LUT\SingleAcq_RawData</Bed> 
        </RawData> 
      </Protocol> 
    </Protocols> 
  </Product>  
  <Product type="uMI880"> 
    <ScanMode type="Coincidence"> 
      <SystemStatus>D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI880\CoincidenceSystemStatus\SystemStatusData.xml</SystemStatus> 
    </ScanMode>  
    <ScanMode type="Single"> 
      <SystemStatus>D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI880\SingleSystemStatus\SystemStatusData.xml</SystemStatus> 
    </ScanMode>  
    <Protocols> 
      <Protocol type="PETTOFCalibrationphantom"> 
        <RawData bedNum="1"> 
          <Bed index="0">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI880\CoincidenceRawData\TOF\Coincidence_RawData</Bed> 
        </RawData> 
      </Protocol>  
      <Protocol type="PETLUTScan"> 
        <RawData bedNum="1"> 
          <Bed index="0">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI880\SingleRawData\LUT\Single_raw_data</Bed> 
        </RawData> 
      </Protocol> 
    </Protocols> 
  </Product>  
  <Product type="uMIX2000"> 
    <ScanMode type="Coincidence"> 
      <SystemStatus>D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI880\CoincidenceSystemStatus\SystemStatusData.xml</SystemStatus> 
    </ScanMode>  
    <ScanMode type="Single"> 
      <SystemStatus>D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMI880\SingleSystemStatus\SystemStatusData.xml</SystemStatus> 
    </ScanMode>  
    <SystemMonitorStatus>D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMIX2000\SymInfo\GCCSYM.xml</SystemMonitorStatus>  
    <OverTempStatus>D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMIX2000\SymInfo\SymInfoNode.xml</OverTempStatus>  
    <Protocols> 
      <Protocol type="PETTOFCalibrationphantom"> 
        <RawData bedNum="4"> 
          <Bed index="0">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMIX2000\CoincidenceRawData\TOF\Coincidence_RawData</Bed>  
          <Bed index="1">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMIX2000\CoincidenceRawData\TOF\Coincidence_RawData</Bed>  
          <Bed index="2">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMIX2000\CoincidenceRawData\TOF\Coincidence_RawData</Bed>  
          <Bed index="3">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMIX2000\CoincidenceRawData\TOF\Coincidence_RawData</Bed> 
        </RawData> 
      </Protocol>  
      <Protocol type="PETLUTScan"> 
        <RawData bedNum="4"> 
          <Bed index="0">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMIX2000\SingleRawData\LUT\Single_raw_data</Bed>  
          <Bed index="1">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMIX2000\SingleRawData\LUT\Single_raw_data</Bed>  
          <Bed index="2">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMIX2000\SingleRawData\LUT\Single_raw_data</Bed>  
          <Bed index="3">D:\UIH\appdata\MI\Simulator\PETGantry\Data\uMIX2000\SingleRawData\LUT\Single_raw_data</Bed> 
        </RawData> 
      </Protocol> 
    </Protocols> 
  </Product> 
</PETGantrySimulator>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace XMLOperate
{
    class Program
    {      
        static string m_filePath = @"D:\UIH\appdata\MI\Simulator\PETGantry\Config\MIPETSimulator_FilePathConfig.xml";

        static private XmlDocument m_docXml = null;
       
        static void Main(string[] args)
        {
            m_docXml = new XmlDocument();
            m_docXml.Load(m_filePath);
            GetRawDataFilePathByProtocalKeyAndBedNo(Product.uMI880, "PETTOFCalibrationphantom", ScanMode.Coincidence, 0);
            GetRawDataFilePathByProtocalKeyAndBedNo(Product.uMIX2000, "PETLUTScan", ScanMode.Single, 2);
            GetSystemStatusFilePath(Product.uMI880,ScanMode.Coincidence);
            GetSymInfoSystemMonitorStatusFilePath(Product.uMI550,ScanMode.Coincidence);
            GetSymInfoOverTempFilePath(Product.uMI550,ScanMode.Coincidence);
        }


        public static string GetSystemStatusFilePath(Product product, ScanMode model)
        {
            if (null != m_docXml)
            {
                string xPath = string.Format("/PETGantrySimulator/Product[@type='{0}']/ScanMode[@type='{1}']/SystemStatus"
                            , product.ToString(), model.ToString());

                XmlNode node = m_docXml.SelectNodes(xPath)[0];
                String filePath = (node as XmlElement).InnerText;
                return filePath;
            }
            return "";
        }

        public static string GetSymInfoSystemMonitorStatusFilePath(Product product, ScanMode model)
        {
            if (null != m_docXml)
            {
                string xPath = string.Format("/PETGantrySimulator/Product[@type='{0}']/SystemMonitorStatus"
                    , product.ToString(), model.ToString());
                XmlNode node = m_docXml.SelectNodes(xPath)[0];
                String filePath = (node as XmlElement).InnerText;
                return filePath;
            }
            return "";
        }

        public static string GetSymInfoOverTempFilePath(Product product, ScanMode model)
        {
            if (null != m_docXml)
            {
                string xPath = string.Format("/PETGantrySimulator/Product[@type='{0}']/OverTempStatus"
                    , product.ToString(), model.ToString());
                XmlNode node = m_docXml.SelectNodes(xPath)[0];
                String filePath = (node as XmlElement).InnerText;
                return filePath;
            }
            return "";
        }


        public static string GetRawDataFilePathByProtocalKeyAndBedNo(Product product, string curProtocol, ScanMode model, int bedIndex)
        {
            String filePath = "";
            try
            {
               
                    if (null != m_docXml)
                    {
                        string xPath = string.Format("/PETGantrySimulator/Product[@type='{0}']/Protocols/Protocol[@type='{1}']/RawData/Bed[@index='{2}']"
                            , product.ToString(), curProtocol.ToString(),  bedIndex.ToString());
                        XmlNode node = m_docXml.SelectNodes(xPath)[0];
                        filePath = (node as XmlElement).InnerText;

                    }                
            }
            catch (System.Exception ex)
            {

            }
            return filePath;
        }
    }

    public enum Product
    {
        EXACTAPCT96 = 0,
        EXACTAPCT112 = 1,
        uMI510 = 2,
        uMI780A = 3,
        uMI780B = 4,
        uMI780C = 5,
        uMI780D = 6,
        uMI550 = 7,
        uMIX2000 = 8,
        uMI590 = 9,
        uMI880 = 10,
        uPMR790 = 11,
        uMIX500 = 12,
        uMI550M = 13,
    }

    public enum ScanMode
    {
        Coincidence,
        Single
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lz_煜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值