解析和更新 liferay web 内容
Parse and update liferay web content
我有一个 JournalArticle web content
包含以下部分。
<root available-locales="en_GB" default-locale="en_GB">
<dynamic-element name="image-id" type="text" index-type="keyword" index="0">
<dynamic-content language-id="en_GB">
<![CDATA[ENG_ID1]]>
</dynamic-content>
</dynamic-element>
<dynamic-element name="main-picture" type="document_library" index-type="keyword" index="0">
<dynamic-element name="main-picture-url" index="0" type="text" index-type="keyword">
<dynamic-content language-id="en_GB">
<![CDATA[http://localhost:8080/documents/11111/22222/Image1/c9ff3112-22a1-4a45-a5d7-ea0b687fa34f?t=1450349423000]]>
</dynamic-content>
</dynamic-element>
<dynamic-content language-id="en_GB">
<![CDATA[/documents/11111/22222/Image2/c9ff3113-23a1-4a35-a1d7-ea0b127fa34f?t=1450349423000]]>
</dynamic-content>
</dynamic-element>
</root>
我试图通过 xml 进行解析,并将 main-picture-url
中的 url 更新为以下动态内容中的值 NotEmpty。
String HOST = "localhost";
String PORT = "8080";
Document contentDocument = SAXReaderUtil.read(content);
List<String> elementNames = Arrays.asList("main-picture");
for (String elementName : elementNames) {
Node mainNode = contentDocument.selectSingleNode("/root/dynamic-element[@name='"+elementName+"']/dynamic-content");
Node urlNode = contentDocument.selectSingleNode("/root/dynamic-element[@name='"+elementName+"']/dynamic-element/dynamic-content");
Integer urlNodeIndex = contentDocument.indexOf(urlNode);
String mainValue = mainNode.getText();
if(!mainValue.equalsIgnoreCase("")) {
urlNode.setText("http://"+HOST+":"+PORT+mainValue);
System.out.println("urlValue is ---> "+urlNode.getText());
}
}
正如您在上面看到的,我可以提取值并将其设置到 url 节点。但是我完全不知道如何将这个url节点设置回内容。我在 SAXReaderUtil
中找不到任何帮助我更新 content
的方法。
有什么方法可以更新内容吗?
答案很简单。
我只需要做
content = contentDocument.asXML()
将更新的文档设置回内容。
我有一个 JournalArticle web content
包含以下部分。
<root available-locales="en_GB" default-locale="en_GB">
<dynamic-element name="image-id" type="text" index-type="keyword" index="0">
<dynamic-content language-id="en_GB">
<![CDATA[ENG_ID1]]>
</dynamic-content>
</dynamic-element>
<dynamic-element name="main-picture" type="document_library" index-type="keyword" index="0">
<dynamic-element name="main-picture-url" index="0" type="text" index-type="keyword">
<dynamic-content language-id="en_GB">
<![CDATA[http://localhost:8080/documents/11111/22222/Image1/c9ff3112-22a1-4a45-a5d7-ea0b687fa34f?t=1450349423000]]>
</dynamic-content>
</dynamic-element>
<dynamic-content language-id="en_GB">
<![CDATA[/documents/11111/22222/Image2/c9ff3113-23a1-4a35-a1d7-ea0b127fa34f?t=1450349423000]]>
</dynamic-content>
</dynamic-element>
</root>
我试图通过 xml 进行解析,并将 main-picture-url
中的 url 更新为以下动态内容中的值 NotEmpty。
String HOST = "localhost";
String PORT = "8080";
Document contentDocument = SAXReaderUtil.read(content);
List<String> elementNames = Arrays.asList("main-picture");
for (String elementName : elementNames) {
Node mainNode = contentDocument.selectSingleNode("/root/dynamic-element[@name='"+elementName+"']/dynamic-content");
Node urlNode = contentDocument.selectSingleNode("/root/dynamic-element[@name='"+elementName+"']/dynamic-element/dynamic-content");
Integer urlNodeIndex = contentDocument.indexOf(urlNode);
String mainValue = mainNode.getText();
if(!mainValue.equalsIgnoreCase("")) {
urlNode.setText("http://"+HOST+":"+PORT+mainValue);
System.out.println("urlValue is ---> "+urlNode.getText());
}
}
正如您在上面看到的,我可以提取值并将其设置到 url 节点。但是我完全不知道如何将这个url节点设置回内容。我在 SAXReaderUtil
中找不到任何帮助我更新 content
的方法。
有什么方法可以更新内容吗?
答案很简单。 我只需要做
content = contentDocument.asXML()
将更新的文档设置回内容。