public class ReaderDom4j { public static void main(String[] args) throws DocumentException, IOException
{
ReaderDom4j rd = new ReaderDom4j();
//读取路径为"F:\\simple.xml";的XML
String path = "";
if("".equals(path))
{
path = "F:\\simple.xml";
}
rd.readAny(path);
}
Document document = null;
/**
* 采用递归方式解析simple.xml并生成需要的newSimple.xml格式
* @param childNodes
* @param root
* @throws IOException
*/
public void buildXML(List childNodes,Element root) throws IOException
{
for(Object obj:childNodes)
{
//为newSimple.xml生成根节点
Node childNode = (Node)obj;
//定义一个计数变量来计数有多少个子节点
int nodesCount = childNode.selectNodes("*").size();
//为ROOT根节点下添加所有子节点MOC
Element rootMoc = root.addElement("MOC");
//获取Simple.xml中Moc节点下的Name属性的值并赋给变量mocName
String mocName = childNode.valueOf("@Name");
//添加newSimple.xml中每个MOC里面的属性name为mocName的值
rootMoc.addAttribute("name", mocName);
/**
* 使用字符串拼接newSimple.xml下的MOC子节点中的displayName属性
* 并使用变量Str接收分割组合好的字符串
*/
String str = mocName.substring(0,1)+mocName.substring(1).toLowerCase();
rootMoc.addAttribute("displayName", str+" Management");
//判断是否是最底层节点
if(nodesCount>0)
{
//1个节点
List childNodes2 = childNode.selectNodes("*");
//使用递归 自己调自己
this.buildXML(childNodes2,rootMoc);
}
//再次获取Simple.xml中Moc节点下的Name属性的值并赋给变量name
String name = childNode.valueOf("@Name");
//接收simple.xml的action属性
String action = childNode.valueOf("@action");
//拼接字符串将newSimple.xml下的MOC节点中name的值转大写
rootMoc.addAttribute("name", name.toUpperCase());
/***
* 拼接字符串newSimple.xml下的MOC节点中的displayName并且将拼接
* 赋值给变量nameMoc
*/
String nameMoc = name.substring(0,1)+name.substring(1).toLowerCase();
if("Brd".equals(nameMoc))
{
nameMoc = "Board";
}
rootMoc.addAttribute("displayName", nameMoc+" Management");
//以" ,"分割action字符串用actions接收
String[] actions = action.split(",");
{
ReaderDom4j rd = new ReaderDom4j();
//读取路径为"F:\\simple.xml";的XML
String path = "";
if("".equals(path))
{
path = "F:\\simple.xml";
}
rd.readAny(path);
}
Document document = null;
/**
* 采用递归方式解析simple.xml并生成需要的newSimple.xml格式
* @param childNodes
* @param root
* @throws IOException
*/
public void buildXML(List childNodes,Element root) throws IOException
{
for(Object obj:childNodes)
{
//为newSimple.xml生成根节点
Node childNode = (Node)obj;
//定义一个计数变量来计数有多少个子节点
int nodesCount = childNode.selectNodes("*").size();
//为ROOT根节点下添加所有子节点MOC
Element rootMoc = root.addElement("MOC");
//获取Simple.xml中Moc节点下的Name属性的值并赋给变量mocName
String mocName = childNode.valueOf("@Name");
//添加newSimple.xml中每个MOC里面的属性name为mocName的值
rootMoc.addAttribute("name", mocName);
/**
* 使用字符串拼接newSimple.xml下的MOC子节点中的displayName属性
* 并使用变量Str接收分割组合好的字符串
*/
String str = mocName.substring(0,1)+mocName.substring(1).toLowerCase();
rootMoc.addAttribute("displayName", str+" Management");
//判断是否是最底层节点
if(nodesCount>0)
{
//1个节点
List childNodes2 = childNode.selectNodes("*");
//使用递归 自己调自己
this.buildXML(childNodes2,rootMoc);
}
//再次获取Simple.xml中Moc节点下的Name属性的值并赋给变量name
String name = childNode.valueOf("@Name");
//接收simple.xml的action属性
String action = childNode.valueOf("@action");
//拼接字符串将newSimple.xml下的MOC节点中name的值转大写
rootMoc.addAttribute("name", name.toUpperCase());
/***
* 拼接字符串newSimple.xml下的MOC节点中的displayName并且将拼接
* 赋值给变量nameMoc
*/
String nameMoc = name.substring(0,1)+name.substring(1).toLowerCase();
if("Brd".equals(nameMoc))
{
nameMoc = "Board";
}
rootMoc.addAttribute("displayName", nameMoc+" Management");
//以" ,"分割action字符串用actions接收
String[] actions = action.split(",");
解决方案 »
- 求助:compass搜索引擎 ssh2 整合后自动创建索引的问题
- Invalid chunk ignored
- 怎样用javaScript使一个链接变灰,不能点击
- 难倒CSDN-javaweb开发论坛所有人的问题!顶
- 如何取得String型的这种格式的日期"20051001"与服务器日期的日期之差啊?谢谢
- [分享]可以随意定义排序语句的千万数量级分页显示存储过程
- jsp动态载入数据
- 【字符截取问题】
- 求助 Tomcat 5.0.14无法访问servlet和Beans
- 请问支持JSP的Web服务器中哪种对中文支持最好?
- 谁给个完整的struts2 json例子啊?
- 服务器向客服端发送命令,以控制客户端
2.最终要达到以字符串形式输出
例:
public String buildXml(String sourceXml)
{
String outXml = "";
//代码处理层
return outXml;
}
3.dispalyName 属性暂时放弃 (因为此属性是动态生成)
unsigned int CWeb::ms_uiWSAStartupCount = 0;
string CWeb::ms_strProxy;
unsigned short CWeb::ms_usProxyPort = 0;CWeb::CWeb()
{
if(0 == ms_uiWSAStartupCount)
{
WSADATA wsaData;
int iRes = WSAStartup(MAKEWORD(2,2), &wsaData);
assert(iRes == NO_ERROR);
}
ms_uiWSAStartupCount++; m_sock = 0;
m_pAddress = new struct sockaddr_in; m_pData = new char[1];
*m_pData = 0;
m_ulDataSize = 0; m_usHostPort = 0; m_DataAndHtmlIsSynchronous = true;
}CWeb::~CWeb()
{
assert(m_pData);
delete[] m_pData;
m_pData = NULL;
m_ulDataSize = 0; if(0 != m_sock)
{
closesocket(m_sock);
m_sock = 0;
} assert(m_pAddress);
delete (struct sockaddr_in*)m_pAddress;
m_pAddress = NULL; if(0 == ms_uiWSAStartupCount)
{
WSACleanup();
}
ms_uiWSAStartupCount--;
}void CWeb::SetAgent(const char* pStrUserAgent)
{
m_strUserAgent = pStrUserAgent;
}void CWeb::SetProxy(const char* pStrProxyName, unsigned short usProxyPort)
{
ms_strProxy = pStrProxyName;
ms_usProxyPort = usProxyPort;
}int CWeb::SetServer(const char* pStrServerName, unsigned short usServerPort)
{
m_strHost = pStrServerName;
m_usHostPort = usServerPort; if(0 != m_sock)
{
closesocket(m_sock);
m_sock = 0;
}
m_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == m_sock)
{
return WEB_ERR_CREATE_SOCK;
} struct hostent* host = NULL;
if(this->IsProxy())
{
host = gethostbyname(ms_strProxy.c_str());
}
else
{
host = gethostbyname(m_strHost.c_str());
}
if(NULL == host)
{
return WEB_ERR_GET_IP;
} // 获取域名对应的IP
char* lpAddr = host->h_addr;
struct in_addr inAddr = {0};
memmove(&inAddr,lpAddr,4); struct sockaddr_in* pAddress = (struct sockaddr_in*)m_pAddress;
pAddress->sin_family = AF_INET;
if(this->IsProxy())
pAddress->sin_port = htons(ms_usProxyPort);
else
pAddress->sin_port = htons(m_usHostPort);
pAddress->sin_addr.s_addr = inet_addr(inet_ntoa(inAddr)); int iRes = connect(m_sock, (SOCKADDR*)pAddress, sizeof(struct sockaddr_in));
if (iRes == SOCKET_ERROR)
{
closesocket(m_sock);
m_sock = 0;
return WEB_ERR_CONNECT;
}
return WEB_ERR_NULL;
}
const char* pStrVerb,
const char* pStrObjName,
const char* pStrAccept,
const char* pStrReferer,
const char* pStrAcceptEncoding,
const char* pStrHeaders)
{
assert(pStrVerb);
assert(pStrObjName); //Accept-Encoding: gzip, deflate..Host: t.sina.com.cn..Connection: Keep-Alive....
ostringstream ossRequest;
ossRequest << pStrVerb;
if(this->IsProxy())
ossRequest << " " << m_strHost.c_str() << pStrObjName;
else
ossRequest << " " << pStrObjName;
ossRequest<< " " << "HTTP/1.1"; if(NULL == pStrAccept || 0 == strlen(pStrAccept))
ossRequest << "\r\n" << "Accept: */*";
else
ossRequest << "\r\n" << "Accept: " << pStrAccept; if(NULL != pStrReferer && 0 == strlen(pStrReferer))
ossRequest << "\r\n" << "Referer: " << pStrReferer; ossRequest << "\r\n" << "Accept-Language: zh-cn"; if(0 == m_strUserAgent.size())
ossRequest << "\r\n" << "User-Agent: " << "My Agent";
else
ossRequest << "\r\n" << "User-Agent: " << m_strUserAgent.c_str(); if(NULL == pStrAcceptEncoding || 0 == strlen(pStrAcceptEncoding))
ossRequest << "\r\n" << "Accept-Encoding: gzip, deflate";
else
ossRequest << "\r\n" << "Accept-Encoding: " << pStrAcceptEncoding; ossRequest << "\r\n" << "Host: " << m_strHost.c_str(); if(NULL != pStrHeaders && 0 == strlen(pStrHeaders))
ossRequest << "\r\n" << pStrHeaders; if(this->IsProxy())
ossRequest << "\r\n" << "Proxy-Connection: Keep-Alive";
else
ossRequest << "\r\n" << "Connection: Keep-Alive"; //添加cookie
if(0 < m_cookieList.size())
{
ossRequest << "\r\n" << "Cookie:";
for(list<CCookie>::iterator it = m_cookieList.begin(); it != m_cookieList.end(); )
{
ossRequest << " " << it->GetKey() << "=" << it->GetValue();
it++;
if(it != m_cookieList.end())
{
ossRequest << ";";
}
}
} ossRequest << "\r\n\r\n"; m_strRequest = ossRequest.str();
}const char* CWeb::GetRequest()
{
return m_strRequest.c_str();
}int CWeb::SendRequest()
{
return send(m_sock, m_strRequest.c_str(), m_strRequest.size(), 0);
}