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