簡體   English   中英

讀取 xml 節點值

[英]Read xml node value

如何從 xml 文件下方讀取所有 ExportHeaderType 節點值。

<ArrayOfCEDataFileMappingSaveProp xmlns="http://schemas.datacontract.org/2004/07/Test.Models" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <CEDataFileMappingSaveProp>
        <HeaderTypes>
            <ExportHeaderType>
                <AppType>LBX</AppType>
                <DocType>Batch</DocType>
                <HeaderType>Detail</HeaderType>
                <CheckboxField>true</CheckboxField>
                <DataFileMapPK>4</DataFileMapPK>
                <IsHeaderRequired>false</IsHeaderRequired>
                <IsHeaderTypeMandatory>true</IsHeaderTypeMandatory>
                <Sequence>0</Sequence>
            </ExportHeaderType>
        </HeaderTypes>
        <DocAppTypeId>LBX</DocAppTypeId>
        <DocTypeId>Batch</DocTypeId>
        <IsHeadingAvailable>false</IsHeadingAvailable>
    </CEDataFileMappingSaveProp>
    <CEDataFileMappingSaveProp>
        <HeaderTypes>
            <ExportHeaderType>
                <AppType>LBX</AppType>
                <DocType>Check</DocType>
                <HeaderType>Detail</HeaderType>
                <CheckboxField>true</CheckboxField>
                <DataFileMapPK>4</DataFileMapPK>
                <IsHeaderRequired>false</IsHeaderRequired>
                <IsHeaderTypeMandatory>true</IsHeaderTypeMandatory>
                <Sequence>0</Sequence>
            </ExportHeaderType>
        </HeaderTypes>
        <DocAppTypeId>LBX</DocAppTypeId>
        <DocTypeId>Check</DocTypeId>
        <IsHeadingAvailable>false</IsHeadingAvailable>
    </CEDataFileMappingSaveProp>
</ArrayOfCEDataFileMappingSaveProp>

嘗試以下操作:

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

namespace ConsoleApplication11
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);
            XmlSerializer serializer = new XmlSerializer(typeof(ArrayOfCEDataFileMappingSaveProp));
            ArrayOfCEDataFileMappingSaveProp array = (ArrayOfCEDataFileMappingSaveProp)serializer.Deserialize(reader);
          
        }
    }
    [XmlRoot(Namespace = "http://schemas.datacontract.org/2004/07/Test.Models")]
    public class ArrayOfCEDataFileMappingSaveProp
    {
        [XmlElement("CEDataFileMappingSaveProp")]
        public List<CEDataFileMappingSaveProp> saveProp { get; set; }
    }
    public class CEDataFileMappingSaveProp
    {
        public string DocAppTypeId { get; set; }
        public string DocTypeId { get; set; }
        public Boolean IsHeadingAvailable { get; set; }

        [XmlArray("HeaderTypes")]
        [XmlArrayItem("ExportHeaderType")]
        public List<HeaderTypes> headers { get; set; }
    }
    public class HeaderTypes
    {
        public string AppType { get; set; }
        public string DocType { get; set; }
        public string HeaderType { get; set; }
        public Boolean CheckboxField { get; set; }
        public int DataFileMapPK { get; set; }
        public Boolean IsHeaderRequired { get; set; }
        public Boolean IsHeaderTypeMandatory { get; set; }
        public int Sequence { get; set; }
    }

}

嘗試這個

XmlSerializer serializer = new XmlSerializer(typeof(ArrayOfCEDataFileMappingSaveProp));

ArrayOfCEDataFileMappingSaveProp result;
using (StringReader reader = new StringReader(xml))
result = (ArrayOfCEDataFileMappingSaveProp)serializer.Deserialize(reader);

List<ExportHeaderType> exportHeaderTypes = result.CEDataFileMappingSaveProp.Select(c => c.HeaderTypes.ExportHeaderType).ToList();

結果(json 格式)

[{"AppType":"LBX","DocType":"Batch","HeaderType":"Detail","CheckboxField":"true","DataFileMapPK":"4","IsHeaderRequired":"false","IsHeaderTypeMandatory":"true","Sequence":"0"},
{"AppType":"LBX","DocType":"Check","HeaderType":"Detail","CheckboxField":"true","DataFileMapPK":"4","IsHeaderRequired":"false","IsHeaderTypeMandatory":"true","Sequence":"0"}]

班級

[XmlRoot(ElementName = "ArrayOfCEDataFileMappingSaveProp", Namespace = "http://schemas.datacontract.org/2004/07/Test.Models")]
public class ArrayOfCEDataFileMappingSaveProp
{
    [XmlElement(ElementName = "CEDataFileMappingSaveProp", Namespace = "http://schemas.datacontract.org/2004/07/Test.Models")]
    public List<CEDataFileMappingSaveProp> CEDataFileMappingSaveProp { get; set; }
    [XmlAttribute(AttributeName = "xmlns")]
    public string Xmlns { get; set; }
    [XmlAttribute(AttributeName = "i", Namespace = "http://www.w3.org/2000/xmlns/")]
    public string I { get; set; }
}

[XmlRoot(ElementName="ExportHeaderType")]
public class ExportHeaderType { 

    [XmlElement(ElementName="AppType")] 
    public string AppType { get; set; } 

    [XmlElement(ElementName="DocType")] 
    public string DocType { get; set; } 

    [XmlElement(ElementName="HeaderType")] 
    public string HeaderType { get; set; } 

    [XmlElement(ElementName="CheckboxField")] 
    public bool CheckboxField { get; set; } 

    [XmlElement(ElementName="DataFileMapPK")] 
    public int DataFileMapPK { get; set; } 

    [XmlElement(ElementName="IsHeaderRequired")] 
    public bool IsHeaderRequired { get; set; } 

    [XmlElement(ElementName="IsHeaderTypeMandatory")] 
    public bool IsHeaderTypeMandatory { get; set; } 

    [XmlElement(ElementName="Sequence")] 
    public int Sequence { get; set; } 
}

[XmlRoot(ElementName="HeaderTypes")]
public class HeaderTypes { 

    [XmlElement(ElementName="ExportHeaderType")] 
    public ExportHeaderType ExportHeaderType { get; set; } 
}

[XmlRoot(ElementName="CEDataFileMappingSaveProp")]
public class CEDataFileMappingSaveProp { 

    [XmlElement(ElementName="HeaderTypes")] 
    public HeaderTypes HeaderTypes { get; set; } 

    [XmlElement(ElementName="DocAppTypeId")] 
    public string DocAppTypeId { get; set; } 

    [XmlElement(ElementName="DocTypeId")] 
    public string DocTypeId { get; set; } 

    [XmlElement(ElementName="IsHeadingAvailable")] 
    public bool IsHeadingAvailable { get; set; } 
}

暫無
暫無

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

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