首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求c#读取xml属性值解决方法

2014-01-01 
求c#读取xml属性值xml文件:?xml version1.0 encodingutf-8?Document xmlns:xsihttp://www.w3.o

求c#读取xml属性值
xml文件:
<?xml version="1.0" encoding="utf-8"?>
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="终端接口XML Schema-2.0.xsd" SN="343617" License="040">
  <Events>
    <!--销售出库,-->
    <Event Name="SalesWareHouseOut" MainAction="WareHouseOut">
      <ActionMaping>
        <Action Name="WareHouseOut">
          <ActionData>Code</ActionData>
          <ActionData>CorpOrderID</ActionData>
          <ActionData>Actor</ActionData>
          <ActionData>ActDate</ActionData>
        </Action>
      </ActionMaping>
      <DataMaping>
        <MetaData Name="Code" Type="string" />
        <MetaData Name="CorpOrderID" Type="string" />
        <MetaData Name="Actor" Type="string" />
        <MetaData Name="ActDate" Type="Date" />
      </DataMaping>
      <DataField>
        <Data Code="81143900028040251957" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027511806124" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027510453880" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027509255484" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027508057635" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027508204343" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027509403677" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027510601766" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027511950686" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900028040405694" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
      </DataField>
    </Event>
  </Events>
</Document>
想把全部CorpOrderID的属性值读出并列表显示
[解决办法]


            System.Xml.Linq.XDocument doc = System.Xml.Linq.XDocument.Load("e:\\1.txt");
            foreach (var employee in doc.Document.Descendants("DataField").First().Descendants("Data"))
            {
                MessageBox.Show(employee.Attribute("CorpOrderID").Value);
            }



[解决办法]
引用:
2楼说的太好了,请问我想在 <Data Code="81143900028040405694" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />这行最后边加一个属性ToCorpID="000003202879"怎么写呀???



            XElement element = XElement.Load(@"c:\1.xml");

            var query = element.Descendants("DataField").Descendants("Data").
                Where(x => (string)x.Attribute("Code") == "81143900028040405694").FirstOrDefault();
            if (query != null)
            {
                query.SetAttributeValue("ToCorpID", "000003202879");
            }

[解决办法]
引用:
Quote: 引用:

Quote: 引用:

2楼说的太好了,请问我想在 <Data Code="81143900028040405694" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />这行最后边加一个属性ToCorpID="000003202879"怎么写呀???



            XElement element = XElement.Load(@"c:\1.xml");

            var query = element.Descendants("DataField").Descendants("Data").
                Where(x => (string)x.Attribute("Code") == "81143900028040405694").FirstOrDefault();
            if (query != null)
            {
                query.SetAttributeValue("ToCorpID", "000003202879");
            }

7楼说的没错,不过我想把
<Data Code="81143900028040251957" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027511806124" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027510453880" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027509255484" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027508057635" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027508204343" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027509403677" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027510601766" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900027511950686" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
        <Data Code="81143900028040405694" ReplaceCode="" CorpOrderID="138204" Actor="1" ActDate="2013-12-19 08:47:09" WrongCode="" UpperCorpOrderID="" />
这几行后边全加上ToCorpID="000003202879"属性,怎么写个循环呀?


你指的节点 DataField 下面所有的Data节点都要加吗?
[解决办法]
引用:
Quote: 引用:

加上保存:
 for (int i=1;i<6;i++)
{
       XElement element = XElement.Load(@"c:"+i+".xml"); 
             element.Descendants("DataField").Descendants("Data").ToList()
                .ForEach(item => { item.SetAttributeValue("ToCorpID", "000003202879"); });


        element.Save(@"c:"+i+".xml");
}


这个方法对规则文件名有用,不过我这的都是不规则的文件名呀!都是这样的:
SalesWareHouseOut_138375.xml,SalesWareHouseOut_138402.xml,SalesWareHouseOut_138404.xml,SalesWareHouseOut_138405.xml,SalesWareHouseOut_138411.xml,而且有几百个,怎么弄呀?


比如你在搜索C盘下面的XML文件,只需要
string[] _files = Directory.GetFiles("C:\", "*.xml");
然后在遍历就好了。

热点排行