我自己先顶一下,大家可以看看vb.net的程序实现
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
using ClsListDWparseString;
namespace materialForm
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
////// localhost.Service1 a =new materialForm.localhost.Service1();
ClsListDWparseString.ClsListDw  B =new ClsListDWparseString.ClsListDw();
//// System.Xml.XmlDocument  xml =new System.Xml.XmlDocument();
//// xml.LoadXml(a.getMaterialFormSap("A-002").OuterXml);
//// B.setDocXML(xml.OuterXml);
///
System.Xml.XmlDocument  xml =new System.Xml.XmlDocument();
XmlTextReader reader = new XmlTextReader ("1234567.xml");
xml.Load(reader);
B.setDocXML(xml.OuterXml);
DataSet ds =new DataSet();
ds=B.makeQueryResultDataSet();
DataGrid1.DataSource=ds;
DataGrid1.DataBind(); } #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
} }

解决方案 »

  1.   

    上面这个程序是vb导入中性xml文件1234567的实现,下面这个程序是实现xml转变的实现
    using System;
    using System.Data;
    using System.Xml;
    using System.IO; 
    using System.Collections; 
    using System.Data.SqlClient;
    using DatabaseSource;
    using System.Runtime.InteropServices;
    using ADODB;
    using System.Data.OleDb;
    namespace ClsListDWparseString 
    {
    public class ClsListDw 
    {
    private int intTotalPageNum = 1; //总的页数
    private  String  CurrentPageNum;
    private  String  strID;
    private  String textElement;
    private XmlNodeList elements;
    private XmlElement pOID;
    private XmlElement pExtension;
    private int intCurrentPageNum = 1; //当前页数
    private int intEachPageNum = 10;  //每页显示条数
    private String strReturnHTML = ""; //返回的结果
    private String docXML =""; //XML文档
        private XmlDocument doc=null;
    private XmlDocument QueryResultDocument;
    //private System.Data.DataSet QueryResultDataSet;
        private DataTable datasettable;
        private DataTable dt;
    //private String bgTdColor = ""; public int getIntTotalPageNum() 
    { //输出intTotalPageNum接口
    return this.intTotalPageNum;
    }
    public void setIntTotalPageNum(int intTotalPageNum) 
    { //输入intTotalPageNum接口
    this.intTotalPageNum = intTotalPageNum;
    }

    public int getIntEachPageNum() 
    { //输出intEachPageNum接口
    return this.intEachPageNum;
    }
    public void setIntEachPageNum(int intEachPageNum) 
    { //输入intEachPageNum接口
    this.intEachPageNum = intEachPageNum;
    } public int getIntCurrentPageNum() 
    { //输出intTotalPageNum接口
    return this.intCurrentPageNum;
    }
    public void setIntCurrentPageNum(int intCurrentPageNum) 
    { //输入intTotalPageNum接口
    this.intCurrentPageNum = intCurrentPageNum;
    } public String getStrReturnHTML() 
    { //输出strReturnHTML接口
    return this.strReturnHTML;
    }
    public void setStrReturnHTML(String strReturnHTML) 
    { //输入strReturnHTML接口
    this.strReturnHTML = strReturnHTML;
    } public String getDocXML() 
    { //输出docXML接口
    return this.docXML;
    }
    public void setDocXML(String docXML) 
    { //输入docXML接口
    this.docXML = docXML;
    } /****************************************
     * 函数名:makeQueryResultShow
     * 
     * 函数描述:解析显示查询结果
     * 
     * @param none
     * 
     * @return 0-解析正常
     *          1 - XML文档为空
     * 
     * @exception 数据库问题
     * ***************************************/
    public int  makeQueryResultShow() 
    {
    String strTable = null; String[] strProjectFlowContent;
    int totalTitleNum = 0;
    String bgTdColor="";
    int totalWidth = 0; //总宽度
    int intCurrentPage = 0;
    int totalRowNum = 0; //总行数
    int totalPageNum = 0;
      
    if (docXML == "")
    return 1;
    this.doc.LoadXml(docXML);
    XmlElement root = doc.DocumentElement;
    //   XmlElement root =  (XmlElement)doc.ChildNodes.Item(0).Name;
    String attRootErr = root.GetAttribute("Err"); //首先要读取根节点result中属性Err的值进行判断 int[] intAttWidth;
    String[] textTitle;
    if (attRootErr.Equals("F")) 
    {

    //取"caption"元素节点中title集合 
    XmlNodeList captions = root.GetElementsByTagName("caption").Item(0).ChildNodes;
    XmlElement caption = (XmlElement) captions.Item(0);

    XmlNodeList titles=root.GetElementsByTagName("caption").Item(0).ChildNodes;
    totalTitleNum = titles.Count; //取得总共要显示的字段个数
    textTitle = new String[totalTitleNum];   
    intAttWidth = new int[totalTitleNum];    
    //依次取每个"title"元素,将各元素值放进数组
    for (int i = 0; i < totalTitleNum; i++) 
    {
    XmlElement title = (XmlElement) titles.Item(i);
    XmlText textNode = (XmlText)title.FirstChild;//getFirstChild();
    textTitle[i] = textNode.Value;//getNodeValue();
    intAttWidth[i] = int.Parse(title.GetAttribute("width")); 
    //累加总宽度
    totalWidth += intAttWidth[i];
    }
    //拼凑html标记显示内容 strTable = "<table border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"" + totalWidth + "\">";
    //拼凑<table width="">元素标记
    bgTdColor = "#5f8ce2";

    strTable += "<tr class=\'title\'>";
    for (int i = 0; i < totalTitleNum; i++) 
    { strTable += "<th bgcolor=\'" + bgTdColor+  "\'"
    + " width=\""
    + intAttWidth[i]
    + "\">"
    + textTitle[i]
    + "</th>"; } strTable += "</tr>"; } 
    else 
    {
    strTable = root.GetAttribute("Description");
    if (strTable.Trim() == "数据集为空") return 2;

    }

    totalWidth = 0; //caption内容显示完毕  XmlNodeList datas = root.GetElementsByTagName("data").Item(0).ChildNodes;
    //XmlElement data = (XmlElement)datas.Item(0);//item(0);取出得是row节点,应该是data节点,这是错误处
    XmlElement data = (XmlElement)root.ChildNodes.Item(1); // 取得总行数
    String totalRowNum1 = data.GetAttribute("totalRowNum");
    totalRowNum = int.Parse(totalRowNum1);
    //取得总页数
    String strTotalPageNum = data.GetAttribute("totalPageNum");
    intTotalPageNum = int.Parse(strTotalPageNum);
    //XmlNodeList rows = data.GetElementsByTagName("row").Item(0).ChildNodes;
    XmlNodeList rows = root.ChildNodes.Item(1).ChildNodes;

    strTable += "<tr class=\'content\'>";
    bgTdColor = "#e2f1f1";
    for (int i = 0; i < totalRowNum; i++) 
    { XmlElement row = (XmlElement) rows.Item(i);//item(i);
    CurrentPageNum = row.GetAttribute("intPageNum");
    //int intCurrentPageNums = Integer.parseInt(CurrentPageNum);
    int intCurrentPageNums = int.Parse(CurrentPageNum); if ((intCurrentPageNums > intCurrentPageNum) ||(intCurrentPageNums > intCurrentPageNum)) 
    {
    break;

    else 
    {
    if (intCurrentPageNums == intCurrentPageNum) //都是 1 运行到此没问题
    {
    //XmlNodeList pOIDs = row.GetElementsByTagName("pOID").Item(0).ChildNodes;
    XmlNodeList pOIDs = root.ChildNodes.Item(1).ChildNodes.Item(0).ChildNodes;
    pOID = (XmlElement) pOIDs.Item(0);//item(0);
    XmlText tpOID = (XmlText) pOID.FirstChild;//getFirstChild();
    strID = tpOID.Value;//getNodeValue(); //获得row的标识号
    //运行到此没问题
    // XmlNodeList pExtensions =row.GetElementsByTagName("pExtension").Item(0).ChildNodes;
    XmlNodeList pExtensions = root.ChildNodes.Item(1).ChildNodes.Item(0).ChildNodes;
    pExtension = (XmlElement) pExtensions.Item(1);
    //运行到此没问题
    elements = row.GetElementsByTagName("element");
    for (int j = 0; j < elements.Count; j++) 
    {
    XmlElement element = (XmlElement) elements.Item(j);
    //XmlText textNode = (Text) element.getFirstChild();
    XmlText textNode = (XmlText) element.FirstChild;
    //String textElement = NullToVoid(textNode.getNodeValue());
    textElement = NullToVoid(textNode.Value);
    strTable += "<td bgcolor=\'" + bgTdColor+  "\'> "
    + textElement
    + "</td>";
    } if (i != totalRowNum - 1) 
    {
    strTable += "</tr><tr>";

    else 
    {
    strTable += "</tr>";
    }


    } //if(intCurrentPageNum==intPageNum) } //if(intCurrentPageNum>intPageNum) } //第一个for
    ////下面也无错误
    strTable += "<tr class=\'content\'>";
    bgTdColor = "#e2f1f1";
    strTable = strTable + "</table>"; strReturnHTML = strTable;
    //return totalRowNum1+rows.Count.ToString()+ CurrentPageNum +pOID.Name +strID +pExtension.Name +elements.Count.ToString() +textElement;
    //return strReturnHTML;
    return 0;
    }
      

  2.   

    public  DataSet  TestMakeDataSet() 
    {
    DataSet QueryResultDataSet=new DataSet();
    System.Data.DataTable dt=QueryResultDataSet.Tables.Add("PhoneNumbers");
    dt.Columns.Add("name");
    dt.Columns.Add("home");
    dt.Columns.Add("mobile");
    dt.Columns.Add("grade"); DataRow newRow ;
    newRow = dt.NewRow();
    newRow["name"] = "吕峰辉";
    newRow["home"] = "河南";
    newRow["mobile"] = "13585980524";
    newRow["grade"] = "研二";
    dt.Rows.Add(newRow); newRow = dt.NewRow();
    newRow["name"] = "罗东花";
    newRow["home"] = "广东";
    newRow["mobile"] = "13564273194";
    newRow["grade"] = "研二";
    dt.Rows.Add(newRow); newRow = dt.NewRow();
    newRow["name"] = "苏婷";
    newRow["home"] = "湖北";
    newRow["mobile"] = "13817036575";
    newRow["grade"] = "研二";
    dt.Rows.Add(newRow); newRow = dt.NewRow();
    newRow["name"] = "郑怀亮";
    newRow["home"] = "江西";
    newRow["mobile"] = "13817036575";
    newRow["grade"] = "已工作";
    dt.Rows.Add(newRow);
    return  QueryResultDataSet; 
    }
    //    
    public  DataSet  makeQueryResultDataSet() 
    {
            XmlDataDocument QueryResultDataSet=new XmlDataDocument();
            DataSet ResultDataSet=new DataSet();
            String  resultxml;
    int i;  //表头字段数目
    int j;  //表内记录条数
    int k;  //每条记录字段数
    int lengthtitle;//表头字段数目
    int lengthdata;  //数据记录数目
            int lengeverydata;//每条记录字段数目,应该等于i
            String titlevalue;
    String datavalue;
           DataTable ResultDataTable=ResultDataSet.Tables.Add("ResultData");
            DataRow newRow ;
            QueryResultDataSet.LoadXml(docXML);
    //      拼凑dataset表头
           lengthtitle =  QueryResultDataSet.GetElementsByTagName("caption").Item(0).ChildNodes.Count; 
           lengthdata = QueryResultDataSet.GetElementsByTagName("data").Item(0).ChildNodes.Count;
    //取得表头值
    for(i=0;i<=lengthtitle - 1;i++)
    { titlevalue = QueryResultDataSet.GetElementsByTagName("caption").Item(0).ChildNodes.Item(i).InnerText;
               ResultDataTable.Columns.Add(titlevalue);
    }
           //取得数据值
    for(j=0;j<=lengthdata - 1;j++)
    {
    lengeverydata =QueryResultDataSet.GetElementsByTagName("data").Item(0).ChildNodes.Item(j).ChildNodes.Item(1).ChildNodes.Count;
    newRow = ResultDataTable.NewRow();
    for(k=0;k<=lengeverydata - 1;k++)
    {
    datavalue = QueryResultDataSet.GetElementsByTagName("data").Item(0).ChildNodes.Item(j).ChildNodes.Item(1).ChildNodes.Item(k).InnerText;
        newRow[ QueryResultDataSet.GetElementsByTagName("caption").Item(0).ChildNodes.Item(k).InnerText] =datavalue;
    }
               ResultDataTable.Rows.Add( newRow);
    }
       return ResultDataSet; }
    private  string  NullToVoid(System.String strTmp)
    {
    if ( strTmp == null)
    return "";
    else
    return strTmp.Trim();

    }

    }
    }
    不知道我得java程序是不是正确,请大家帮忙看看
      

  3.   

    A.xml  经过转换规则A  生成A1.xml
    B.xml  经过转换规则B  生成B1.xmlA1和B1的格式相同,你定义转换规则A,B即可感觉是这样
      

  4.   

    就是这样的,但是我的具体实现的java程序的功底不够,虽然正在努力但是程序不成功,所以希望各位大侠帮忙看看,最好能有段代码,深谢
      

  5.   

    下面这个是我定义的中性xml文件text的格式:
    <?xml version="1.0" encoding="GB2312" ?> 
    <Sequence_Information>
    <Sequence id="1" owner="企业A">
    <caption>
      <title id="A1" width="80">产品描述</title> 
      <title id="A2" width="80">零件编号</title> 
      <title id="A3" width="80">零部件名称</title> 
      <title id="A4" width="80">零件类型</title> 
      <title id="A5" width="80">设计时间</title> 
      <title id="A6" width="80">零件版本</title> 
      <title id="A7" width="80">零件图号</title> 
      </caption>
       <data totalRowNum="1" totalPageNum="1">
       <row intPageNum="1">
       <pOID>Material number</pOID> 
       </row>
      </data>
      </Sequence>
    <Sequence id="2" owner="企业B">
    <caption>
        <title id="B1" width="80">零件版本</title>
        <title id="B2" width="80">零部件名称</title>
        <title id="B3" width="80">零件编号</title>
        <title id="B4" width="80">零件图号</title>
        <title id="B5" width="80">设计时间</title>
        <title id="B6" width="80">制造方式</title>
        <title id="B7" width="80">零件类型</title>
        </caption>
        <data totalRowNum="1" totalPageNum="1">
       <row intPageNum="1">
        <pOID>零件版本</pOID>
         </row>
         </data>
      </Sequence>
    <Sequence id="3" owner="企业A和企业B">
    <caption>
        <title width="80">零件版本</title>
      <Relation id="1">
        <title1 id="A6" width="80"></title1>
        <title2 id="B1" width="80"></title2>
       </Relation>
        <title width="80">零部件名称</title> 
       <Relation id="2"> 
        <title1 id="A3" width="80"></title1> 
        <title2 id="B2" width="80"></title2> 
      </Relation>
       <title width="80">零件编号</title>
      <Relation id="3"> 
        <title1 id="A2" width="80"></title1> 
        <title2 id="B3" width="80"></title2>
      </Relation>
        <title width="80">零件图号</title>
      <Relation id="4"> 
        <title1 id="A7" width="80"></title1> 
        <title2 id="B4" width="80"></title2>
      </Relation>
        <title width="80">设计时间</title>
      <Relation id="5"> 
        <title1 id="A5" width="80"></title1> 
        <title2 id="B5" width="80"></title2>
       </Relation>
        <title width="80">制造方式</title>
      <Relation id="6">  
        <title1 id="A1" width="80"></title1> 
        <title2 id="B6" width="80"></title2>
      </Relation>
        <title width="80">零件类型</title>
      <Relation id="7"> 
        <title1 id="A4" width="80"></title1>
        <title2 id="B7" width="80"></title2>
      </Relation>
     </caption>
       <data totalRowNum="1" totalPageNum="1">
       <row intPageNum="1">
        <pOID></pOID> 
       </row>
      </data>
      </Sequence>
      </Sequence_Information>
      

  6.   

    这样的话只需要修改企业A的xml结构变成企业B的xml结构就可以了,但是这个xml结构的转变我还没有找到相关的资料还望大家帮忙,谢谢
      

  7.   

    很明显。。偶--"分りません"。java和xml都是8会!很想学习一下。帮你顶一下喽!
    关注ing
      

  8.   

    这个程序的本意是取得xml结构对应节点的属性值赋给一个数组,然后把这个数组赋给xml结构,从中性xml文件里面搜索对应的节点,然后显示出来就ok了
    这个基本上就是程序的原理
    希望大家帮忙亚………………
      

  9.   

    不知道你说的这两个xml文件的结构是否是固定的,比如有一定的规律,如果有一定的规律(比如xml结构是固定的)的话,那你可以用ORM来实现。目前实现ORM的xml绑定框架有很多,比如JIBX,Castor,JXAB等,你可以选择一种,把xml文件映射成java类来做,就很方便了。推荐你用JIBX,速度快,轻量级,不过它有个缺点就是每次编译时需要重新进行一下映射类文件的编译,但也正是这样它才比castor等速度快。如果你懒一点的话,就利用castor好了。另外,我看你是用w3c的dom结构来进行xml解析的,这样不是很好,现在有很多开源包如jdom,dom4j等,速度要远远比这个快很多,建议你用dom4j,它比jdom高不止一个等级,速度很快,而且非常方便,并且支持xpath,这样就你可以很方便去找某个节点了。{这个程序的本意是取得xml结构对应节点的属性值赋给一个数组,然后把这个数组赋给xml结构,从中性xml文件里面搜索对应的节点,然后显示出来就ok了
    这个基本上就是程序的原理
    希望大家帮忙亚………………}
    如果是这样的话,如果你不介意只用IE的话,我倒是觉得利用IE的数据岛来进行显示比较方便。
    看了一圈,感觉不是很明白你的意思,希望上面的话能对你有所启发。