解析特定xml格式的字符串

[size=9]本人今天遇到一个解析xml格式的字符串问题,刚开始时想通过把字符串读到xml文件,再用解析器解析(如果这样做的话,我将要生成无数个xml和解析无数次xml,因为我的需求是每执行一段业务逻辑将返回一段有规律的xml格式的字符串),这样有种哗众取宠的感觉,我是这样解决的:
[code] public static String[] parseString() {
String[] strArr = new String[4];
//特定的xml格式字符串
String str = "<ReturnValue><state>状态值</state><CommandID>CommandID</CommandID>" +
"<MsgSubSeq>MsgSubSeq</MsgSubSeq><Description>描述</Description>" +
"</ReturnValue>";
String state = str.substring(str.indexOf("<state>")+7,str.indexOf("</state>"));
String commandID = str.substring(str.indexOf("<CommandID>")+11,str.indexOf("</CommandID>"));
String msgSubSeq = str.substring(str.indexOf("<MsgSubSeq>")+11,str.indexOf("</MsgSubSeq>"));
String description = str.substring(str.indexOf("<Description>")+13,str.indexOf("</Description>"));
strArr[0] = state;
strArr[1] = commandID;
strArr[2] = msgSubSeq;
strArr[3] = description;
return strArr;

}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] strArr = parseString();
if(strArr != null && strArr.length > 1) {
for(int loop = 0; loop < strArr.length; loop++) {
System.out.println("strArr["+loop+"]==>"+strArr[loop]);
}
}
}[/code][/size]
在SQL中,可以使用内置的XML函数来解析XML格式字符串。 首先,可以使用CAST或CONVERT函数将XML格式字符串转换为XML数据类型。例如: ```sql DECLARE @xmlString NVARCHAR(MAX) = '<bookstore><book><title>SQL Basics</title><author>John Doe</author></book></bookstore>'; DECLARE @xmlData XML; SET @xmlData = CAST(@xmlString AS XML); ``` 然后,可以使用XML节点和属性访问方法来从XML数据中提取所需的信息。例如,可以使用query()方法来查询特定节点或属性的值。例如: ```sql SELECT @xmlData.query('/bookstore/book/title') AS Title, @xmlData.query('/bookstore/book/author') AS Author; ``` 此外,还可以使用value()方法来提取单个节点或属性的值。例如: ```sql SELECT @xmlData.value('(/bookstore/book[1]/title)[1]', 'NVARCHAR(MAX)') AS Title, @xmlData.value('(/bookstore/book[1]/author)[1]', 'NVARCHAR(MAX)') AS Author; ``` 如果需要在查询中使用XML中的命名空间,可以使用WITH XMLNAMESPACES子句来定义XML命名空间。例如: ```sql DECLARE @xmlStringNamespace NVARCHAR(MAX) = '<bookstore xmlns="http://www.example.com"><book><title>SQL Basics</title><author>John Doe</author></book></bookstore>'; DECLARE @xmlDataNamespace XML; SET @xmlDataNamespace = CAST(@xmlStringNamespace AS XML); ;WITH XMLNAMESPACES(DEFAULT 'http://www.example.com') SELECT @xmlDataNamespace.value('(/bookstore/book[1]/title)[1]', 'NVARCHAR(MAX)') AS Title, @xmlDataNamespace.value('(/bookstore/book[1]/author)[1]', 'NVARCHAR(MAX)') AS Author; ``` 通过使用这些内置的XML函数和方法,可以在SQL中轻松地解析XML格式字符串,并从中提取所需的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值