解析xml,请教高手。

江南小鱼 2010-01-05 01:20:25

- <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
- <s:Schema id="RowsetSchema">
- <s:ElementType name="row" content="eltOnly">
- <s:AttributeType name="c0" rs:name="单据编号" rs:number="1" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="20" rs:maybenull="false" />
</s:AttributeType>
- <s:AttributeType name="c1" rs:name="购方税号" rs:number="2" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="20" />
</s:AttributeType>
- <s:AttributeType name="c2" rs:name="购方名称" rs:number="3" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="100" />
</s:AttributeType>
- <s:AttributeType name="c3" rs:name="购方地址电话" rs:number="4" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" dt:maxLength="100" />
</s:AttributeType>
- <s:AttributeType name="c4" rs:name="购方银行帐号" rs:number="5" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" dt:maxLength="100" />
</s:AttributeType>
- <s:AttributeType name="c5" rs:name="水费编号" rs:number="6" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="20" />
</s:AttributeType>
- <s:AttributeType name="c6" rs:name="客户编号" rs:number="7" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="20" />
</s:AttributeType>
- <s:AttributeType name="c7" rs:name="开票金额" rs:number="8" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="number" rs:dbtype="numeric" dt:maxLength="19" rs:scale="2" rs:precision="18" rs:fixedlength="true" />
</s:AttributeType>
- <s:AttributeType name="c8" rs:name="类别代码" rs:number="9" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="10" />
</s:AttributeType>
- <s:AttributeType name="c9" rs:name="发票号码" rs:number="10" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="10" />
</s:AttributeType>
- <s:AttributeType name="c10" rs:name="开票机号" rs:number="11" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="i2" dt:maxLength="2" rs:precision="5" rs:fixedlength="true" />
</s:AttributeType>
- <s:AttributeType name="c11" rs:name="日期" rs:number="12" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="dateTime" rs:dbtype="timestamp" dt:maxLength="16" rs:scale="3" rs:precision="23" rs:fixedlength="true" />
</s:AttributeType>
- <s:AttributeType name="c12" rs:name="发票金额" rs:number="13" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="number" rs:dbtype="numeric" dt:maxLength="19" rs:scale="2" rs:precision="18" rs:fixedlength="true" />
</s:AttributeType>
- <s:AttributeType name="c13" rs:name="发票状态" rs:number="14" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="ui1" dt:maxLength="1" rs:precision="3" rs:fixedlength="true" />
</s:AttributeType>
- <s:AttributeType name="c14" rs:name="备注" rs:number="15" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="240" />
</s:AttributeType>
<s:extends type="rs:rowbase" />
</s:ElementType>
</s:Schema>
- <rs:data>
<z:row c0="1049311" c1="310101132303205" c2="上海群力草药店" c3="金陵东路396号 63288888" c4="黄浦支行金分 012689-2098268909007016397" c5="10237" c6="10237" c7="337446.65" c8="3205491170" c9="1459428" c10="0" c11="2009-10-10T00:00:00" c12="337446.65" c13="0" c14="" />
<z:row c0="1049312" c1="140931662367552" c2="山西瑞星医药有限公司" c3="太原市迎泽区青年路50号 0351-4669301" c4="中国银行青年路支行 107351452608048052" c5="10231" c6="10231" c7="30878.05" c8="3205491170" c9="1459429" c10="0" c11="2009-10-10T00:00:00" c12="30878.05" c13="0" c14="" />
</rs:data>
</xml>

解析xml,生成一个DataTable;DataTable字段以及数据如下所示:
单据编号 购方税号 购方名称 购方地址电话 购房银行账号 水费编号 客户编号 开票金额 类别代码 发票编号 开票机号 日期 发票金额 发票状态 备注
1049311 310101132303205 上海群力草药店 金陵东路396号 63288888 黄浦支行金分 012689-2098268909007016397 10237 10237 337446.65 3205491170 1459428 0 2009-10-10T00:00:00 337446.65 0

...全文
369 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
江南小鱼 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wartim 的回复:]
C# codeusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Xml;namespace WindowsA?-
[/Quote]
多谢!我粗略测试了一下方法执行时间,执行方法耗时微乎其微。先前之所以看到解析速度慢,是自身原因

static DataTable ParseXml(string strXML)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(strXML);

DataTable dt = new DataTable();
DataColumn dc;
XmlNamespaceManager XNM = new XmlNamespaceManager(xmldoc.NameTable);
XNM.AddNamespace("s", "uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882");
XNM.AddNamespace("dt", "uuid:C2F41010-65B3-11d1-A29F-00AA00C14882");
XNM.AddNamespace("rs", "urn:schemas-microsoft-com:rowset");
XNM.AddNamespace("z", "#RowsetSchema");

int TotalFieldCount = 0;
for (; ; TotalFieldCount++)
{
string ColumnName = "c" + TotalFieldCount.ToString();
XmlNode Node = xmldoc.SelectSingleNode("//xml/s:Schema/s:ElementType/s:AttributeType[@name=\"" + ColumnName + "\"]/@rs:name", XNM);
XmlNode Node1 = xmldoc.SelectSingleNode("//xml/s:Schema/s:ElementType/s:AttributeType[@name=\"" + ColumnName + "\"]/s:datatype/@dt:type", XNM);
if (Node == null)
break;
//Console.WriteLine(Node1.InnerText);
dc = new DataColumn();
dc.ColumnName = ColumnName; //Node.InnerText;
dc.DataType = typeof(System.String); //Type.GetType("System."+Node1.InnerText);
dt.Columns.Add(dc);
}
//打印列名
//foreach (DataColumn dc1 in dt.Columns)
//{
// Console.WriteLine(dc1.ColumnName.ToString());
//}
XmlNodeList Nodes = xmldoc.SelectNodes("//xml/rs:data/z:row", XNM);
foreach (XmlNode Node in Nodes)
{
DataRow dr = dt.NewRow();
for (int i = 0; i < TotalFieldCount; i++)
{
string ColumnName = "c" + i.ToString();
dr[ColumnName] = Node.Attributes[ColumnName].InnerText;
}
dt.Rows.Add(dr);
}
return dt;
}
程序小海 2010-01-05
  • 打赏
  • 举报
回复
学习 ……
wartim 2010-01-05
  • 打赏
  • 举报
回复
那就先放datatable里,数据还是要一条条读


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace WindowsApplication265
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

XmlDocument Doc = new XmlDocument();
Doc.Load(@"c:\a.xml");

XmlNamespaceManager XNM = new XmlNamespaceManager(Doc.NameTable);
XNM.AddNamespace("s", "uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882");
XNM.AddNamespace("dt", "uuid:C2F41010-65B3-11d1-A29F-00AA00C14882");
XNM.AddNamespace("rs", "urn:schemas-microsoft-com:rowset");
XNM.AddNamespace("z", "#RowsetSchema");

DataGridView DGV = new DataGridView();
DGV.Parent = this;
DGV.Dock = DockStyle.Fill;
DGV.AllowUserToAddRows = false;

DataTable DT = new DataTable();

int TotalFieldCount = 0;

for (; ; TotalFieldCount++)
{
String ColumnName = "c" + TotalFieldCount.ToString();

XmlNode Node = Doc.SelectSingleNode
("//xml/s:Schema/s:ElementType/s:AttributeType[@name=\""
+ ColumnName + "\"]/@rs:name", XNM);

if (Node == null)
break;

DT.Columns.Add(ColumnName);
DT.Columns[DT.Columns.Count - 1].Caption = Node.InnerText;
}

XmlNodeList Nodes = Doc.SelectNodes("//xml/rs:data/z:row", XNM);
foreach (XmlNode Node in Nodes)
{
Object[] Objs = new Object[TotalFieldCount];

for (int i = 0; i < TotalFieldCount; i++)
{
String ColumnName = "c" + i.ToString();

Objs[i]= Node.Attributes[ColumnName].InnerText;
}

DT.Rows.Add(Objs);
}

DGV.DataSource = DT;

foreach (DataGridViewColumn Column in DGV.Columns)
Column.HeaderText = DT.Columns[Column.DataPropertyName].Caption;
}
}
}
江南小鱼 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bennyrongrong 的回复:]
            ArrayList list = new ArrayList();
            foreach (XmlNode node in doc.SelectNodes("//AttributeType"))
            {
         
              string aaa = node.Attributes["rs:name"].Value;
           
                list.Add(aa);
            }
            这样得到一个list,再把list里面的值填充到DataTable里面即可,其实也可以不用放到list里面再填充到DataTable,直接添加到DataTable也可以.


[/Quote]
您的思路不错!

static void ParseXML(string strXML)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(strXML);
foreach (XmlNode node in xmldoc.SelectNodes("//AttributeType"))
{
Console.WriteLine(node.Attributes["rs:name"].Value);
}
}

如果知道怎么解析这种xml,那么实现生成DataTable不是一件麻烦的事。
只是你提供的这种解析方式没有任何数据。
依然感谢你的回答..
江南小鱼 2010-01-05
  • 打赏
  • 举报
回复
To wartim
多谢您!但是解析速度会很慢!
解析xml,生成DataTable。这种解决方案是为了处理
http://topic.csdn.net/u/20091230/17/409cad26-9c7e-4ed3-8e30-02bd1957599b.html
这个问题的。

按照您的方法解析这种XML,解析速度很不乐观。有什么改进的办法吗?或者说针对
http://topic.csdn.net/u/20091230/17/409cad26-9c7e-4ed3-8e30-02bd1957599b.html
这个问题,您有什么好的解决方案吗?谢谢

static DataTable ParseXml(string strXML)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(strXML);

DataTable dt = new DataTable();
DataColumn dc;
XmlNamespaceManager XNM = new XmlNamespaceManager(xmldoc.NameTable);
XNM.AddNamespace("s", "uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882");
XNM.AddNamespace("dt", "uuid:C2F41010-65B3-11d1-A29F-00AA00C14882");
XNM.AddNamespace("rs", "urn:schemas-microsoft-com:rowset");
XNM.AddNamespace("z", "#RowsetSchema");

int TotalFieldCount = 0;
for (; ; TotalFieldCount++)
{
string ColumnName = "c" + TotalFieldCount.ToString();
XmlNode Node = xmldoc.SelectSingleNode("//xml/s:Schema/s:ElementType/s:AttributeType[@name=\""+ColumnName+"\"]/@rs:name",XNM);
XmlNode Node1 = xmldoc.SelectSingleNode("//xml/s:Schema/s:ElementType/s:AttributeType[@name=\""+ColumnName+"\"]/s:datatype/@dt:type", XNM);
if (Node == null)
break;
//Console.WriteLine(Node1.InnerText);
dc = new DataColumn();
dc.ColumnName = ColumnName; //Node.InnerText;
dc.DataType = typeof(System.String); //Type.GetType("System."+Node1.InnerText);
dt.Columns.Add(dc);
}
//打印列名
//foreach (DataColumn dc1 in dt.Columns)
//{
// Console.WriteLine(dc1.ColumnName.ToString());
//}
XmlNodeList Nodes = xmldoc.SelectNodes("//xml/rs:data/z:row", XNM);
foreach (XmlNode Node in Nodes)
{
DataRow dr = dt.NewRow();
for (int i = 0; i < TotalFieldCount; i++)
{
string ColumnName = "c" + i.ToString();
dr[ColumnName] = Node.Attributes[ColumnName].InnerText;
}
dt.Rows.Add(dr);
}
return dt;
}
bennyrongrong 2010-01-05
  • 打赏
  • 举报
回复
ArrayList list = new ArrayList();
foreach (XmlNode node in doc.SelectNodes("//AttributeType"))
{

string aaa = node.Attributes["rs:name"].Value;

list.Add(aa);
}
这样得到一个list,再把list里面的值填充到DataTable里面即可,其实也可以不用放到list里面再填充到DataTable,直接添加到DataTable也可以.

wartim 2010-01-05
  • 打赏
  • 举报
回复
c:\a.xml

注意因为有中文,所以编码是GB2312


<?xml version="1.0" encoding="GB2312" ?>
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly">
<s:AttributeType name="c0" rs:name="单据编号" rs:number="1" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="20" rs:maybenull="false" />
</s:AttributeType>
<s:AttributeType name="c1" rs:name="购方税号" rs:number="2" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="20" />
</s:AttributeType>
<s:AttributeType name="c2" rs:name="购方名称" rs:number="3" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="100" />
</s:AttributeType>
<s:AttributeType name="c3" rs:name="购方地址电话" rs:number="4" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" dt:maxLength="100" />
</s:AttributeType>
<s:AttributeType name="c4" rs:name="购方银行帐号" rs:number="5" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" dt:maxLength="100" />
</s:AttributeType>
<s:AttributeType name="c5" rs:name="水费编号" rs:number="6" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="20" />
</s:AttributeType>
<s:AttributeType name="c6" rs:name="客户编号" rs:number="7" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="20" />
</s:AttributeType>
<s:AttributeType name="c7" rs:name="开票金额" rs:number="8" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="number" rs:dbtype="numeric" dt:maxLength="19" rs:scale="2" rs:precision="18" rs:fixedlength="true" />
</s:AttributeType>
<s:AttributeType name="c8" rs:name="类别代码" rs:number="9" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="10" />
</s:AttributeType>
<s:AttributeType name="c9" rs:name="发票号码" rs:number="10" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="10" />
</s:AttributeType>
<s:AttributeType name="c10" rs:name="开票机号" rs:number="11" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="i2" dt:maxLength="2" rs:precision="5" rs:fixedlength="true" />
</s:AttributeType>
<s:AttributeType name="c11" rs:name="日期" rs:number="12" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="dateTime" rs:dbtype="timestamp" dt:maxLength="16" rs:scale="3" rs:precision="23" rs:fixedlength="true" />
</s:AttributeType>
<s:AttributeType name="c12" rs:name="发票金额" rs:number="13" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="number" rs:dbtype="numeric" dt:maxLength="19" rs:scale="2" rs:precision="18" rs:fixedlength="true" />
</s:AttributeType>
<s:AttributeType name="c13" rs:name="发票状态" rs:number="14" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="ui1" dt:maxLength="1" rs:precision="3" rs:fixedlength="true" />
</s:AttributeType>
<s:AttributeType name="c14" rs:name="备注" rs:number="15" rs:nullable="true" rs:writeunknown="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="240" />
</s:AttributeType>
<s:extends type="rs:rowbase" />
</s:ElementType>
</s:Schema>
<rs:data>
<z:row c0="1049311" c1="310101132303205" c2="上海群力草药店" c3="金陵东路396号 63288888" c4="黄浦支行金分 012689-2098268909007016397" c5="10237" c6="10237" c7="337446.65" c8="3205491170" c9="1459428" c10="0" c11="2009-10-10T00:00:00" c12="337446.65" c13="0" c14="" />
<z:row c0="1049312" c1="140931662367552" c2="山西瑞星医药有限公司" c3="太原市迎泽区青年路50号 0351-4669301" c4="中国银行青年路支行 107351452608048052" c5="10231" c6="10231" c7="30878.05" c8="3205491170" c9="1459429" c10="0" c11="2009-10-10T00:00:00" c12="30878.05" c13="0" c14="" />
</rs:data>
</xml>
wartim 2010-01-05
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace WindowsApplication265
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

XmlDocument Doc = new XmlDocument();
Doc.Load(@"c:\a.xml");

XmlNamespaceManager XNM = new XmlNamespaceManager(Doc.NameTable);
XNM.AddNamespace("s", "uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882");
XNM.AddNamespace("dt", "uuid:C2F41010-65B3-11d1-A29F-00AA00C14882");
XNM.AddNamespace("rs", "urn:schemas-microsoft-com:rowset");
XNM.AddNamespace("z", "#RowsetSchema");

DataGridView DGV = new DataGridView();
DGV.Parent = this;
DGV.Dock = DockStyle.Fill;
DGV.AllowUserToAddRows = false;

int TotalFieldCount = 0;

for (; ; TotalFieldCount++)
{
String ColumnName = "c" + TotalFieldCount.ToString();

XmlNode Node = Doc.SelectSingleNode
("//xml/s:Schema/s:ElementType/s:AttributeType[@name=\""
+ ColumnName + "\"]/@rs:name", XNM);

if (Node == null)
break;

DGV.Columns.Add(ColumnName, Node.InnerText);
}

XmlNodeList Nodes = Doc.SelectNodes("//xml/rs:data/z:row", XNM);
foreach (XmlNode Node in Nodes)
{
DGV.Rows.Add(1);

for (int i = 0; i < TotalFieldCount; i++)
{
String ColumnName = "c" + i.ToString();

DGV[ColumnName, DGV.RowCount - 1].Value = Node.Attributes[ColumnName].InnerText;
}
}
}
}
}
江南小鱼 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lovelj2012 的回复:]
引用 3 楼 zengzhan 的回复:
XML codeXmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(TextBox3.Text);
XmlNode xmlnode1 = xmldoc.SelectSingleNode("RowsetSchema");
foreach (XmlElement xmlnode in xmlnode1.ChildNodes)
{
    Res?-

C# codestaticvoid ParseXml(string strXML)
{
XmlDocument xmldoc=new XmlDocument();
xmldoc.LoadXml(strXML);
XmlNode xmlnode1= xmldoc.SelectSingleNode("RowsetSchema");foreach (XmlElement xmlnodein xmlnode1.ChildNodes)
{
Console.WriteLine("单据编号"+ xmlnode.GetAttribute("c0"));
Console.WriteLine("购方税号"+ xmlnode.GetAttribute("c1"));
Console.WriteLine("购方名称"+ xmlnode.GetAttribute("c3"));
Console.WriteLine("备注"+ xmlnode.GetAttribute("c14"));foreach (XmlElement xmlele1in xmlnode.ChildNodes)
{
Console.WriteLine("c1="+ xmlele1.GetAttribute("c1"));
Console.WriteLine("c2="+ xmlele1.GetAttribute("c2"));
Console.WriteLine("c3="+ xmlele1.GetAttribute("c3"));
Console.WriteLine("c14="+ xmlele1.GetAttribute("c14"));
}
}
}
出现异常
异常信息:未处理的“System.Xml.XmlException”类型的异常出现在 System.Xml.dll 中。
其他信息: 根级别上的数据无效。 行 1,位置 1。

xml文件就是上面贴出来的xml
[/Quote]

XmlDocument.LoadXml方法加载的是xml片段
XmlDocument.Load方法可以加载xml文档
上面改成:xmldoc.Load(strXML);会提示这种异常:未处理的“System.NullReferenceException”类型的异常..
调试发现xmlnode1为null
江南小鱼 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zengzhan 的回复:]
XML codeXmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(TextBox3.Text);
XmlNode xmlnode1 = xmldoc.SelectSingleNode("RowsetSchema");
foreach (XmlElement xmlnode in xmlnode1.ChildNodes)
{
Res?-
[/Quote]

static void ParseXml(string strXML)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(strXML);
XmlNode xmlnode1 = xmldoc.SelectSingleNode("RowsetSchema");
foreach (XmlElement xmlnode in xmlnode1.ChildNodes)
{
Console.WriteLine("单据编号" + xmlnode.GetAttribute("c0"));
Console.WriteLine("购方税号" + xmlnode.GetAttribute("c1"));
Console.WriteLine("购方名称" + xmlnode.GetAttribute("c3"));
Console.WriteLine("备注" + xmlnode.GetAttribute("c14"));

foreach (XmlElement xmlele1 in xmlnode.ChildNodes)
{
Console.WriteLine("c1=" + xmlele1.GetAttribute("c1"));
Console.WriteLine("c2=" + xmlele1.GetAttribute("c2"));
Console.WriteLine("c3=" + xmlele1.GetAttribute("c3"));
Console.WriteLine("c14=" + xmlele1.GetAttribute("c14"));
}
}
}

出现异常
异常信息:未处理的“System.Xml.XmlException”类型的异常出现在 System.Xml.dll 中。
其他信息: 根级别上的数据无效。 行 1,位置 1。

xml文件就是上面贴出来的xml
江南小鱼 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zengzhan 的回复:]
XML codeXmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(TextBox3.Text);
XmlNode xmlnode1 = xmldoc.SelectSingleNode("RowsetSchema");
foreach (XmlElement xmlnode in xmlnode1.ChildNodes)
{
Res?-
[/Quote]
完整的测试代码能发一份吗?按照上面代码测试,会报错。
qqzeng-ip 2010-01-05
  • 打赏
  • 举报
回复
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(TextBox3.Text);
XmlNode xmlnode1 = xmldoc.SelectSingleNode("RowsetSchema");
foreach (XmlElement xmlnode in xmlnode1.ChildNodes)
{
Response.Write("单据编号" + xmlnode.GetAttribute("c0"));
Response.Write("购方税号" + xmlnode.GetAttribute("c1"));
Response.Write("购方名称" + xmlnode.GetAttribute("c3"));
....
Response.Write("备注" + xmlnode.GetAttribute("c14"));
Response.Write("<br>");
foreach (XmlElement xmlele1 in xmlnode.ChildNodes)
{
Response.Write("c1=" + xmlele1.GetAttribute("c1"));
Response.Write("c2=" + xmlele1.GetAttribute("c2"));
Response.Write("c3=" + xmlele1.GetAttribute("c3"));
....
Response.Write("c14=" + xmlele1.GetAttribute("c14"));
}
}
qqzeng-ip 2010-01-05
  • 打赏
  • 举报
回复
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(TextBox3.Text);
XmlNode xmlnode1 = xmldoc.SelectSingleNode("RowsetSchema");
foreach (XmlElement xmlnode in xmlnode1.ChildNodes)
{
Response.Write("单据编号=" + xmlnode.GetAttribute("xx"));
.....
foreach (XmlElement xmlele1 in xmlnode.ChildNodes)
{
Response.Write(...);
...
}
}
江南小鱼 2010-01-05
  • 打赏
  • 举报
回复
自己顶..
解析常规的xml文件没什么难度
解析这种类型的xml文件还真没思路
请高手赐教..

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧