0
我有一个问题,假设我有一个XML字符串,如下面的一个:显示标签名称和值/ UNIX
<请求>的SayHello < /请求> <响应>波< /响应>
如果我想输出是:
请求:SayHello的 响应:波
我将如何进行?我不是在寻找任何特定的东西,我只是想“格式化”XML。
在此先感谢
我有一个问题,假设我有一个XML字符串,如下面的一个:显示标签名称和值/ UNIX
<请求>的SayHello < /请求> <响应>波< /响应>
如果我想输出是:
请求:SayHello的 响应:波
我将如何进行?我不是在寻找任何特定的东西,我只是想“格式化”XML。
在此先感谢
一个Perl的正则表达式和方式:
echo "<Request>SayHello</Request><Response>Wave</Response>" | perl -ne 'print "Request: $1 Response: $2\n" if /<Request>(.*?)<\/Request><Response>(.*?)<\/Response>/'
编辑:
好,多一点普通的捕获和打印任何标签(把文件x.pl ):
#!/usr/bin/perl -w
while (<STDIN>) {
while ($_ =~ /<(.*?)>(.*?)<\/\1>/g) {
print ($1 . ": " . $2 . "\n");
}
}
用法的例子是:
echo "<Request>Hello</Request><Response>Goodbye</Response><Other>Foo</Other>"|./x.pl
EDIT2:
然后在这里是用java另一种方式,你可以拉出你基于XPath表达式想要的:
import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.*;
public class Example {
Example(String xml) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbf.newDocumentBuilder();
Document doc = builder.parse(xml);
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpresion expr = xpath.compile("/some/xml/path/text()");
NodeList nl = (NodeList) xpath.evaluate(doc, XPathConstants.NODE_LIST);
System.out.println("Node value: " + nl.items(0).getNodeValue());
}
}
您好凯文,好耶那的工作,但我我们希望获取xml中的每个标签名称,并将其与其值一起显示,而不管名称本身如何。就像使用以下方式格式化xml:Request:打个招呼,不管标签名称如何,就像一个将每个标签放在一起的通用功能 – GRIM 2011-05-26 14:14:08
@GRIM:查看我的更新示例。请注意,它不适用于嵌套标签。不知道这是你感兴趣的东西。 – Kevin 2011-05-26 15:41:58
非常感谢凯文! – GRIM 2011-05-27 07:06:15