【问题标题】:SimpleXML get inner XML from particular ElementSimpleXML 从特定元素获取内部 XML
【发布时间】:2021-04-26 09:15:08
【问题描述】:

我在从一个字段中提取值时遇到问题。此处为XML 示例:

<Rule id="xccdf_org.cisecurity.benchmarks_rule_4.1.2_Ensure_that_the_kubelet_service_file_ownership_is_set_to_rootroot" selected="false" weight="1.000000" role="full">
    <title
        xmlns:xhtml="http://www.w3.org/1999/xhtml" xml:lang="en">Ensure that the kubelet service file ownership is set to root:root
    </title>
    <description
        xmlns:xhtml="http://www.w3.org/1999/xhtml" xml:lang="en">
        <xhtml:p>Ensure that the 
            <xhtml:span class="inline_block">kubelet</xhtml:span> service file ownership is set to 
            <xhtml:span class="inline_block">root:root</xhtml:span>.
        </xhtml:p>
    </description>
</Rule>

我想获取description 字段的全部值

我的测试:

@Test
public void ruleTest() throws Exception {
    Serializer serializer = new Persister();
    File source = new File("E:\\test2.xml");
    Rule rule = serializer.read(Rule.class,source);
    System.out.println("-----------------------------------------------");
    System.out.println("Title: "+rule.title+", Desc: "+rule.description.description);
    System.out.println("-----------------------------------------------");
}

和类:

@Root(strict = false, name = "Rule")
public class Rule {
    @Element
    String title;
    @Element(required = false,type = RuleDescription.class)
    RuleDescription description;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}
@Root(strict = false, name = "description")
public class RuleDescription {
    @Element(name = "p", required = false)
    String description;
}

输出是:

-----------------------------------------------
Title: Ensure that the kubelet service file ownership is set to root:root, Desc: Ensure that the 
-----------------------------------------------

这意味着SimpleXML 只是读取值并在出现在其路径上的第一个标记之前中断。我想获得描述的全部价值,即: Ensure that the &lt;xhtml:span class="inline_block"&gt;kubelet&lt;/xhtml:span&gt; service file ownership is set to &lt;xhtml:span class="inline_block"&gt;root:root&lt;/xhtml:span&gt;. 或者没有像Ensure that the kubelet service file ownership is set to root:root 这样的标签更好,但我可以通过删除标签来做到这一点。

如果可能的话,谁能给我一个提示?

【问题讨论】:

    标签: java simple-framework


    【解决方案1】:

    尝试使用 Simple Framework 的 Convert 类。您可能需要编写自己的 Converter 类来解析上述 XML。下面给出了示例链接

    SimpleFramwork XML: Element with Inner Text and Child Elements

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 2021-03-30
      • 2021-03-25
      • 1970-01-01
      • 2020-06-19
      • 2015-02-01
      相关资源
      最近更新 更多