<?xml version="1.0" encoding="utf-8" ?>
- <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
- <SOAP-ENV:Header>
<TransactionID xmlns="http://www.monternet.com/dsmp/schemas/">00110300006690</TransactionID>
</SOAP-ENV:Header>
- <SOAP-ENV:Body>
- <SyncOrderRelationReq xmlns="http://www.monternet.com/dsmp/schemas/">
<Version>1.5.0</Version>
<MsgType>SyncOrderRelationReq</MsgType>
- <Send_Address>
<DeviceType>0</DeviceType>
<DeviceID>0011</DeviceID>
</Send_Address>
- <Dest_Address>
<DeviceType>400</DeviceType>
<DeviceID>0</DeviceID>
</Dest_Address>
- <FeeUser_ID>
<UserIDType>2</UserIDType>
<MSISDN />
<PseudoCode>00110000000049</PseudoCode>
</FeeUser_ID>
- <DestUser_ID>
<UserIDType>2</UserIDType>
<MSISDN />
<PseudoCode>00110000000049</PseudoCode>
</DestUser_ID>
<LinkID>SP</LinkID>
<ActionID>1</ActionID>
<ActionReasonID>1</ActionReasonID>
<SPID>900047</SPID>
<SPServiceID>0000000030</SPServiceID>
<AccessMode>2</AccessMode>
<FeatureStr>IA==</FeatureStr>
</SyncOrderRelationReq>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
现在需要取得的是
<LinkID>SP</LinkID>
<ActionID>1</ActionID>
<ActionReasonID>1</ActionReasonID>
<SPID>900047</SPID>
<SPServiceID>0000000030</SPServiceID>
<AccessMode>2</AccessMode>
这里面的数据
LinkID,ActionReasonID,SPID
怎么获得那??
- <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
- <SOAP-ENV:Header>
<TransactionID xmlns="http://www.monternet.com/dsmp/schemas/">00110300006690</TransactionID>
</SOAP-ENV:Header>
- <SOAP-ENV:Body>
- <SyncOrderRelationReq xmlns="http://www.monternet.com/dsmp/schemas/">
<Version>1.5.0</Version>
<MsgType>SyncOrderRelationReq</MsgType>
- <Send_Address>
<DeviceType>0</DeviceType>
<DeviceID>0011</DeviceID>
</Send_Address>
- <Dest_Address>
<DeviceType>400</DeviceType>
<DeviceID>0</DeviceID>
</Dest_Address>
- <FeeUser_ID>
<UserIDType>2</UserIDType>
<MSISDN />
<PseudoCode>00110000000049</PseudoCode>
</FeeUser_ID>
- <DestUser_ID>
<UserIDType>2</UserIDType>
<MSISDN />
<PseudoCode>00110000000049</PseudoCode>
</DestUser_ID>
<LinkID>SP</LinkID>
<ActionID>1</ActionID>
<ActionReasonID>1</ActionReasonID>
<SPID>900047</SPID>
<SPServiceID>0000000030</SPServiceID>
<AccessMode>2</AccessMode>
<FeatureStr>IA==</FeatureStr>
</SyncOrderRelationReq>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
现在需要取得的是
<LinkID>SP</LinkID>
<ActionID>1</ActionID>
<ActionReasonID>1</ActionReasonID>
<SPID>900047</SPID>
<SPServiceID>0000000030</SPServiceID>
<AccessMode>2</AccessMode>
这里面的数据
LinkID,ActionReasonID,SPID
怎么获得那??
解决方案 »
- JavaScript中如何调用服务器端中的方法?
- 订单编号对用户来说需要用来搜索吗
- c#生成xls文件的问题?
- html中怎样连接两个字符传?
- FCKeditor图片上传成功后文件夹下面没有
- 呈现控件时出错
- ★关于下拉列表框提交的问题。
- asp.net 水晶报表问题
- 如何用ASP。NET(VB)调用C++动态库(DLL)??
- 请问如何在远程服务器上启动调试?
- 用正则表达式如何从<IMG height=55 src="http://www.gobygo.com/TheGoByGo/images/book-channel.gif" width=210 border=0>中获取http://w
- 从字符串中查找<img src="http://..." width="20">的正则表达式,不是UBB的[img],恳请!!!
xmldoc.Load(...);
string ns = "http://schemas.xmlsoap.org/soap/envelope/";
XmlNode envelope = xmldoc["Envelope",ns];
XmlNode body = envelope["Body",ns];
XmlNode req = body["SyncOrderRelationReq"];
XmlNode linkId = req["LinkID"];
Console.WriteLine(linkId.InnerXml);
ByVal strFileName As String, _
ByVal strSection As String, _
ByVal strKey As String _
) As String
Try
Dim strReturn As String
strReturn = "" Dim objXmlDocument As XmlDocument
objXmlDocument = New XmlDocument
objXmlDocument.Load(strFileName) Dim objNodeList As XmlNodeList
objNodeList = objXmlDocument.GetElementsByTagName(strSection)
If Not objNodeList Is Nothing Then
Dim childNodeList As XmlNodeList
childNodeList = objNodeList.Item(0).ChildNodes
If Not childNodeList Is Nothing Then
Dim objNode As XmlNode
For Each objNode In childNodeList
If objNode.Name = strKey Then
strReturn = objNode.InnerText
Exit For
End If
Next
End If
End If Return strReturn
Catch ex As Exception
Return ""
End Try
End Function------------------------------
用这个函数传递文件名称,节点,子节点。
string ns = "http://schemas.xmlsoap.org/soap/envelope/";
XmlNode envelope = xmldoc["Envelope",ns];
XmlNode body = envelope["Body",ns];
XmlNode req = body["SyncOrderRelationReq"];
XmlNode linkId = req["LinkID"];
Console.WriteLine(linkId.InnerXml);
但是我从性能上考虑,除了使用XmlTextReader,这里为了方便使用XmlDocument,那么它一旦Load完毕,其DOM就已经建立
此时如果再用XPath查询,那么还得动态解析XPath,然后再从DOM上提取数据
还不如直接在已经建立好的DOM中用索引查找
毕竟它更贴近OOP概念,使用时也更容易理解一些.
class MainClass
{
static XmlDocument XmlDoc;
static XmlNamespaceManager NM;
static string NS = "http://schemas.xmlsoap.org/soap/envelope/"; [STAThread]
static void Main(string[] args)
{
XmlDoc = new XmlDocument();
XmlDoc.Load("C:/test.xml");
NM = new XmlNamespaceManager(XmlDoc.NameTable);
NM.AddNamespace("SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/");
NM.AddNamespace("Req", "http://www.monternet.com/dsmp/schemas/"); DateTime dt1,dt2;
dt1 = DateTime.Now;
string linkId;
for(int i = 0;i < 1000000;i++)
{
linkId = XPathTest();
}
dt2 = DateTime.Now;
Console.WriteLine("XPathTest: {0}",dt2 - dt1); dt1 = DateTime.Now;
for(int i = 0;i < 1000000;i++)
{
linkId = DOMTest();
}
dt2 = DateTime.Now;
Console.WriteLine("DOMTest: {0}",dt2 - dt1); Console.ReadLine();
} static string XPathTest()
{
XmlNode linkId = XmlDoc.SelectSingleNode("/SOAP-ENV:Envelope/SOAP-ENV:Body/Req:SyncOrderRelationReq/Req:LinkID", NM);
return linkId.InnerXml;
} static string DOMTest()
{
XmlNode linkId = XmlDoc["Envelope",NS]["Body",NS]["SyncOrderRelationReq"]["LinkID"];
return linkId.InnerXml;
}
}结果是:
XPathTest: 00:00:27.4218750
DOMTest: 00:00:03.8750000你可以看到性能差异非常的大