[英]how to get id from an xml output from wsdl webservice
i have a webservice (wsdl) generated from a java project. 我有一个从Java项目生成的Web服务(wsdl)。 its output is getting as xml format.
其输出以xml格式获取。 something like this
像这样的东西
<?xml version="1.0" encoding="UTF-8"?><list><map><entry key="aid">160608</entry><entry key="aDate">2013-10-24 00:00:00.0 IST</entry><entry key="insuranceType">Self Pay</entry><entry key="status">New</entry><entry key="pid">160576</entry><entry key="pChartno" /><entry key="lName">Mathur</entry><entry key="fName">Gaurav</entry><entry key="mName">mathur</entry><entry key="gender">Male</entry><entry key="ssn" /><entry key="providerId">2030</entry><entry key="providerFname">lakshman</entry></map></list>
in my cs file i parse the xml and put the result in a dataset. 在我的CS文件中,我解析xml并将结果放入数据集中。 here is my code
这是我的代码
DataSet dsresult = new DataSet();
XmlDocument xml = new XmlDocument();
xml.LoadXml("--XML String From Webservice Here--");
XmlElement exelement = xml.DocumentElement;
XmlNodeReader nodereader = new XmlNodeReader(exelement);
dsresult.ReadXml(nodereader, XmlReadMode.Auto);
return dsresult;
now i bind the dataset to a gridview and it show only this 现在我将数据集绑定到gridview,它仅显示此
Image of grid view here 此处的网格视图图像
how can i get the key from each node ie, from <entry key="aid">
and display "aid" and other keys as table head? 我如何从每个节点(例如
<entry key="aid">
密钥,并在表头中显示“ aid”和其他密钥? cs code will be helpful. CS代码会有所帮助。
i want a grid data like this (Click here for grid image) 我想要这样的网格数据(单击此处获取网格图像)
EDIT 1 编辑1
For single row data,Sam's code is working. 对于单行数据,Sam的代码有效。 but when i input an xml string like this
但是当我输入这样的xml字符串时
<?xml version="1.0" encoding="UTF-8"?><list><map><entry key="aid">173661</entry><entry key="aDate">2013-10-28 00:00:00.0 IST</entry><entry key="insuranceType">Self Pay</entry><entry key="status">Serviced</entry><entry key="pid">163686</entry><entry key="pChartno" /><entry key="lName">Bec&&kwith</entry><entry key="fName">Burt</entry><entry key="mName" /><entry key="gender">Male</entry><entry key="ssn" /><entry key="providerId">137935</entry><entry key="providerFname">test</entry></map><map><entry key="aid">173675</entry><entry key="aDate">2013-10-28 00:00:00.0 IST</entry><entry key="insuranceType">Self Pay</entry><entry key="status">New</entry><entry key="pid">2038</entry><entry key="pChartno" /><entry key="lName">Velusamy </entry><entry key="fName">Anand</entry><entry key="mName">M</entry><entry key="gender">Male</entry><entry key="ssn">12345690</entry><entry key="providerId">137935</entry><entry key="providerFname">test</entry></map><map><entry key="aid">173679</entry><entry key="aDate">2013-10-28 00:00:00.0 IST</entry><entry key="insuranceType">Self Pay</entry><entry key="status">Serviced</entry><entry key="pid">140417</entry><entry key="pChartno" /><entry key="lName">alex</entry><entry key="fName">pandian</entry><entry key="mName" /><entry key="gender">Male</entry><entry key="ssn" /><entry key="providerId">137935</entry><entry key="providerFname">test</entry></map></list>
it shows this error:-"There are multiple root elements" 它显示此错误:-“有多个根元素”
I tried your XML and I got this result. 我尝试了您的XML,并得到了这个结果。
You need to create new instance of StringReader
and pass your XML to it. 您需要创建
StringReader
新实例并将XML传递给它。 As you DataSet
will contain key and desc columns you need to create a DataTable
to convert the rows to columns, hence the extra function. 由于您的
DataSet
将包含键和desc列,因此您需要创建一个DataTable
来将行转换为列,因此需要额外的功能。
protected void Page_Load(object sender, EventArgs e)
{
DataSet dsresult = new DataSet();
XmlDocument xml = new XmlDocument();
xml.LoadXml("<?xml version=\"1.0\" encoding=\"UTF-8\"?><list><map><entry key=\"aid\">160608</entry><entry key=\"aDate\">2013-10-24 00:00:00.0 IST</entry><entry key=\"insuranceType\">Self Pay</entry><entry key=\"status\">New</entry><entry key=\"pid\">160576</entry><entry key=\"pChartno\" /><entry key=\"lName\">Mathur</entry><entry key=\"fName\">Gaurav</entry><entry key=\"mName\">mathur</entry><entry key=\"gender\">Male</entry><entry key=\"ssn\" /><entry key=\"providerId\">2030</entry><entry key=\"providerFname\">lakshman</entry></map></list>");
XmlElement exelement = xml.DocumentElement;
dsresult.ReadXml(new XmlTextReader(new System.IO.StringReader(exelement.InnerXml)));
DataTable transposedTable = GenerateTransposedTable(dsresult.Tables[0]);
grd.DataSource = transposedTable;
grd.DataBind();
}
private DataTable GenerateTransposedTable(DataTable inputTable)
{
DataTable outputTable = new DataTable();
// Add columns by looping rows
// Header row's first column is same as in inputTable
outputTable.Columns.Add(inputTable.Columns[0].ColumnName.ToString());
// Header row's second column onwards, 'inputTable's first column taken
foreach (DataRow inRow in inputTable.Rows)
{
string newColName = inRow[0].ToString();
outputTable.Columns.Add(newColName);
}
// Add rows by looping columns
for (int rCount = 1; rCount <= inputTable.Columns.Count - 1; rCount++)
{
DataRow newRow = outputTable.NewRow();
// First column is inputTable's Header row's second column
newRow[0] = inputTable.Columns[rCount].ColumnName.ToString();
for (int cCount = 0; cCount <= inputTable.Rows.Count - 1; cCount++)
{
string colValue = inputTable.Rows[cCount][rCount].ToString();
newRow[cCount + 1] = colValue;
}
outputTable.Rows.Add(newRow);
}
return outputTable;
}
try this 尝试这个
Your Xml 您的Xml
<?xml version="1.0" encoding="UTF-8" ?>
<list>
<map>
<entry key="aid">160608</entry>
<entry key="aDate">2013-10-24 00:00:00.0 IST</entry>
<entry key="insuranceType">Self Pay</entry>
<entry key="status">New</entry>
<entry key="pid">160576</entry>
<entry key="pChartno" />
<entry key="lName">Mathur</entry>
<entry key="fName">Gaurav</entry>
<entry key="mName">mathur</entry>
<entry key="gender">Male</entry>
<entry key="ssn" />
<entry key="providerId">2030</entry>
<entry key="providerFname">lakshman</entry>
</map>
</list>
private void LoadData()
{
XDocument xDoc = XDocument.Load("E:\\test.xml");
XElement xEle = xDoc.XPathSelectElement("//map");
List<string> lstValues = new List<string>();
if (xEle != null)
{
foreach (XElement xElement in xEle.Descendants())
{
if (xElement.Attribute("key") != null)
{
lstValues.Add(xElement.Attribute("key").Value); // In this List you will get everything
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.