【发布时间】:2020-02-19 14:10:39
【问题描述】:
我正在尝试从 xml 文件中的 CDATA 节点获取 MethodName 值。
XML 文件看起来像-
<params>
<param index="0">
<value>
<![CDATA[{PackageResponse=./src/test/resources/TestData/ExpectedData/InstantCash/GetAnywherePayoutAgents/ExpectedPackageResponse.json, ProviderRequest=./src/test/resources/TestData/ExpectedData/InstantCash/GetAnywherePayoutAgents/ExpectedProviderRequest.json, ParameterFilePath=./src/test/resources/TestData/RequestParameter/InstantCash/GetAnywherePayoutAgents.json, ProviderResponse=./src/test/resources/TestData/ExpectedData/InstantCash/GetAnywherePayoutAgents/ExpectedProviderResponse.json, MethodName=GetAnywherePayoutAgents}]]>
</value>
</param>
</params>
我所尝试的只是给我这个的所有文本值-
JAVA 代码-
public static String getCharacterDataFromElement(Element e) {
NodeList list = e.getChildNodes();
String data;
for(int index = 0; index < list.getLength(); index++){
if(list.item(index) instanceof CharacterData){
CharacterData child = (CharacterData) list.item(index);
data = child.getData();
if(data != null && data.trim().length() > 0)
return child.getData();
}
}
return "";
}
但我只想要来自 CDATA 的方法名称值。请帮忙!
【问题讨论】:
-
显而易见的建议是使用标准语法(XML 或 JSON)作为值,而不是你自己编造的东西。但如果您必须使用非标准语法,那么您只需要进行一些自定义解析。
-
您的整个 getCharacterDataFromElement 方法可以替换为 Element 从 Node 继承的 getTextContent 方法。文本内容本身看起来像未引用的 JSON,因此您应该将其传递给 JSON 解析器,然后检索与
"MethodName"键对应的值。
标签: java xml xml-parsing cdata