Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从多个XML文件中读取两个节点的最有效方法是什么?_C#_Xml - Fatal编程技术网

C# 从多个XML文件中读取两个节点的最有效方法是什么?

C# 从多个XML文件中读取两个节点的最有效方法是什么?,c#,xml,C#,Xml,我正在寻找一种快速有效的方法,从多个xml文件中检索2个字符串 他们自己的文件没有那么大,只有50kb到100kb,文件的数量可以从零到100不等。我已经包含了一个我将要使用的非常小的xml文件的示例。所有xml文件的格式都相同,从所有文件中我只需要知道两件事,即: <Company>test bv.</Company> <Ship>sss testing</Ship> 测试bv。 sss测试 我想将这些字符串存储在结构/类中,

我正在寻找一种快速有效的方法,从多个xml文件中检索2个字符串

他们自己的文件没有那么大,只有50kb到100kb,文件的数量可以从零到100不等。我已经包含了一个我将要使用的非常小的xml文件的示例。所有xml文件的格式都相同,从所有文件中我只需要知道两件事,即:

    <Company>test bv.</Company>
    <Ship>sss testing</Ship>
测试bv。
sss测试
我想将这些字符串存储在结构/类中,因为我不能在.NET3.5中使用元组(或者我弄错了?)

所以问题是:做这件事最有效的方法是什么?使用Xdocument?使用xmlReader?还是别的什么

<?xml version="1.0" encoding="utf-8"?>
<Collection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Customer>
    <ID>-1</ID>
    <Updated>true</Updated>
    <Company>test bv.</Company>
    <Ship>sss testing</Ship>
    <Adress>fggfgggff gvg</Adress>
    <City>fgcgg</City>
    <ZipCode>5454fc</ZipCode>
    <Country>fcgggff</Country>
    <BTW_Nmbr>55</BTW_Nmbr>
    <IsTempCustomer>true</IsTempCustomer>
    <PhoneNumbers>
      <ContactData>
        <ID>21</ID>
        <Updated>true</Updated>
        <Description>455656567</Description>
        <Name>ghbbvh</Name>
        <IsSendable>false</IsSendable>
      </ContactData>
      <ContactData>
        <ID>22</ID>
        <Updated>true</Updated>
        <Description>2315098234146124302134</Description>
        <Name>asdfawegaebf</Name>
        <IsSendable>false</IsSendable>
      </ContactData>
    </PhoneNumbers>
    <EmailAdresses />
  </Customer>
  <Order>
    <ID>-1</ID>
    <Updated>true</Updated>
    <OrderNr>10330200</OrderNr>
    <OrderDate>1-1-2005</OrderDate>
    <StartDate>10-9-2013</StartDate>
    <ExpirationDate>20-10-2013</ExpirationDate>
    <Executor>Andre de Zwart</Executor>
    <Executors />
    <Reference />
    <OrderDetail />
    <IsDigital>true</IsDigital>
  </Order>
  <Materials>
    <MaterialData>
      <ID>108</ID>
      <Updated>true</Updated>
      <Description>ffdffggfg</Description>
      <Amount>34</Amount>
    </MaterialData>
    <MaterialData>
      <ID>109</ID>
      <Updated>true</Updated>
      <Description>ffccff</Description>
      <Amount>45</Amount>
    </MaterialData>
  </Materials>
  <HourExpenses>
    <HourExpensesData>
      <ID>43850</ID>
      <Updated>true</Updated>
      <Date>2013-10-06T00:00:00</Date>
      <Notes>lala</Notes>
      <Day>Sunday</Day>
      <Hours>0.01</Hours>
      <BusinessHours>0.01</BusinessHours>
      <TravledHoursTo>0</TravledHoursTo>
      <TravledHoursFrom>0</TravledHoursFrom>
      <Start>2013-10-06T12:27:00</Start>
      <Stop>2013-10-06T12:27:00</Stop>
    </HourExpensesData>
    <HourExpensesData>
      <ID>43849</ID>
      <Updated>true</Updated>
      <Date>2013-09-17T00:00:00</Date>
      <Notes>oke dus ik ben nu lekker aan het werk en ik typ wat spul er bij</Notes>
      <Day>Tuesday</Day>
      <Hours>0</Hours>
      <BusinessHours>0.01</BusinessHours>
      <TravledHoursTo>0</TravledHoursTo>
      <TravledHoursFrom>0</TravledHoursFrom>
      <Start>2013-09-17T12:31:31</Start>
      <Stop>2013-09-17T12:31:32</Stop>
    </HourExpensesData>
    <HourExpensesData>
      <ID>43855</ID>
      <Updated>true</Updated>
      <Date>2013-10-03T00:00:00</Date>
      <Notes>test</Notes>
      <Day>Thursday</Day>
      <Hours>0</Hours>
      <BusinessHours>0</BusinessHours>
      <TravledHoursTo>12</TravledHoursTo>
      <TravledHoursFrom>12</TravledHoursFrom>
      <Start>0001-01-01T00:00:00</Start>
      <Stop>0001-01-01T00:00:00</Stop>
    </HourExpensesData>
  </HourExpenses>
  <TravelExpenses>
    <TravelExpensesData>
      <ID>672</ID>
      <Updated>true</Updated>
      <Date>2013-09-27T00:00:00</Date>
      <Notes />
      <KmTo>45</KmTo>
      <KmFrom>45</KmFrom>
      <Declaration>0</Declaration>
    </TravelExpensesData>
  </TravelExpenses>
  <Signatures>
    <ID>-1</ID>
    <Updated>true</Updated>
    <OrderID>10330200</OrderID>
    <Completed>false</Completed>
    <Notes>yay het werkt ;D</Notes>
  </Signatures>
  <RemovedDataList />
</Collection>

-1
真的
测试bv。
sss测试
fggfgggff gvg
fgcgg
5454fc
fcgggff
55
真的
21
真的
455656567
ghbbvh
假的
22
真的
2315098234146124302134
asdfawegaebf
假的
-1
真的
10330200
1-1-2005
10-9-2013
20-10-2013
安德烈·德兹瓦特
真的
108
真的
FFDFFGG
34
109
真的
ffccff
45
43850
真的
2013-10-06T00:00:00
拉拉
星期日
0.01
0.01
0
0
2013-10-06T12:27:00
2013-10-06T12:27:00
43849
真的
2013-09-17T00:00:00
这是一个很好的例子,因为这是一个很好的例子
星期二
0
0.01
0
0
2013-09-17T12:31:31
2013-09-17T12:31:32
43855
真的
2013-10-03T00:00:00
测试
星期四
0
0
12
12
0001-01-01T00:00:00
0001-01-01T00:00:00
672
真的
2013-09-27T00:00:00
45
45
0
-1
真的
10330200
假的
是的,是的;D

我只想以最简单的方式使用LINQ到XML:

var query = from file in files
            let doc = XDocument.Load(file)
            from customer in doc.Descendants("Customer")
            select new {
               Company = (string) customer.Element("Company"),
               Ship = (string) customer.Element("Ship")
            };
我希望这已经很快了,但是你应该弄清楚你的确切性能要求是什么,然后测试它们。(几乎可以肯定,您不需要“最有效”的方法—您需要一种充分有效的方法,同时保持代码可读性。)


请注意,如果希望将值从当前方法传播出去,则应创建自己的类来表示公司/发货对。

我将以最简单的方式使用LINQ to XML:

var query = from file in files
            let doc = XDocument.Load(file)
            from customer in doc.Descendants("Customer")
            select new {
               Company = (string) customer.Element("Company"),
               Ship = (string) customer.Element("Ship")
            };
我希望这已经很快了,但是你应该弄清楚你的确切性能要求是什么,然后测试它们。(几乎可以肯定,您不需要“最有效”的方法—您需要一种充分有效的方法,同时保持代码可读性。)


请注意,如果希望将值从当前方法传播出去,则应创建自己的类来表示公司/发货对。

我将以最简单的方式使用LINQ to XML:

var query = from file in files
            let doc = XDocument.Load(file)
            from customer in doc.Descendants("Customer")
            select new {
               Company = (string) customer.Element("Company"),
               Ship = (string) customer.Element("Ship")
            };
我希望这已经很快了,但是你应该弄清楚你的确切性能要求是什么,然后测试它们。(几乎可以肯定,您不需要“最有效”的方法—您需要一种充分有效的方法,同时保持代码可读性。)


请注意,如果希望将值从当前方法传播出去,则应创建自己的类来表示公司/发货对。

我将以最简单的方式使用LINQ to XML:

var query = from file in files
            let doc = XDocument.Load(file)
            from customer in doc.Descendants("Customer")
            select new {
               Company = (string) customer.Element("Company"),
               Ship = (string) customer.Element("Ship")
            };
我希望这已经很快了,但是你应该弄清楚你的确切性能要求是什么,然后测试它们。(几乎可以肯定,您不需要“最有效”的方法—您需要一种充分有效的方法,同时保持代码可读性。)


请注意,如果希望将值从当前方法传播出去,则应创建自己的类来表示公司/船舶对。

您是对的@Jon Skeet足够有效的方法就可以了。我必须承认我忘记了linq(不知道我可以用它来做这个),这真的很酷你是对的@Jon Skeet足够有效的方法就可以了。我必须承认我忘记了linq(不知道我可以用它来做这个),这真的很酷你是对的@Jon Skeet足够有效的方法就可以了。我必须承认我忘记了linq(不知道我可以用它来做这个),这真的很酷你是对的@Jon Skeet足够有效的方法就可以了。我必须承认我忘记了linq(不知道我可以用它来做这个),这真的很酷