易截截图软件、单文件、免安装、纯绿色、仅160KB

XML over TCP

如果要完整的支持XML over TCP,只有两种办法:
1,加一个header去标明数据的长度
2,加一个delimiter去标明数据的结束
这两种方法都不够优雅。我们不需要一个通用的方法,我们只要一个最适合我们的方法。
通常,我们能够自定义数据的格式,而且我们通常一条消息只有一个root node,那么我们可以试试下面的函数:
//return length of the xml message
//return -1 for invalid data
//return 0 for not fully received
int GetXmlLen(string buf, string rootName)
{
string head = "<" + rootName;
if (buf.Length < head.Length)
{
//not fully recved
return 0;
}
if (!buf.StartsWith(head))
{
//invalid
return -1;
}
int idx = buf.IndexOf('>');
if (idx < 0)
{
//not fully recved
return 0;
}
if (buf[idx-1] == '/')
{
//empty root element
return (idx + 1);
}
string tail = "</" + rootName + ">";
idx = buf.IndexOf(tail);
if (idx < 0)
{
//not fully recved
return 0;
}
return (idx + tail.Length);
}
要求:XML消息只有一个root node,rootName不是任何子节点的名字,而且消息是以"/>"或者"</rootName>"结尾。
这并不是很苛刻的要求,大多数基于XML的协议实际上就是这样的。
如果你的XML协议满足上述要求,那么当你在TCP上传输XML的时候,就可以试试我的函数。
PS:这个示例函数是用C#写的,用其他语言也很容易实现同样的功能。


相关文档:

XML的使用


写XML:
    protected void btnSave_Click(object sender, EventArgs e)
    {
        //权限判断
        XmlTextWriter xmlw = new XmlTextWriter(Server.MapPath("~\\") + "FriendLink.xml", Encoding.Ge ......

xml格式获取值

function getkeyvalue(s_keyname,s_keystr)
s_keybegin="<"+s_keyname+">"
s_keyend="</"+s_keyname+">"
s_i_begin=instr(s_keystr,s_keybegin)
s_i_end=instr(s_keystr,s_keyend)
if s_i_end<=s_i_begin+len(s_keybegin) then
getkeyvalue=""
exit function
else
getkeyvalue=mid(s_k ......

C# 获取文件信息并导出Excel,Xml报表

using System;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
// 添加引用 -> .NET -> Microsoft.Office.Interop.Excel(2003->11.0, 2007->12.0)
namespace WinFormTable
{
& ......

dom4j 读写xml文件

首先我们给出一段示例程序:
import
 java.io.File;
import
 java.io.FileWriter;
import
 java.util.Iterator;
import
 org.dom4j.Document;
import
 org.dom4j.DocumentHelper;
import
 org.dom4j.Element;
import
 org.dom4j.io.OutputFormat;
import
 org.dom ......

android xml dom解释

private
NodeList root(
final
String url , 
final
String str){
      
NodeList root =
null
;
      
try
{
      
InputSource is=
new
InputSource(
new
InputStreamReader(
new
UR ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号