【问题标题】:Parsing XML with multiple same name child per Element with java使用java解析每个元素具有多个同名子元素的XML
【发布时间】:2014-08-28 13:50:21
【问题描述】:

这个响应的格式与我习惯的有点不同。子节点都是单个元素的一部分。所有的孩子都有相同的名字,标签是通用格式。我需要这些节点中的每一个都包含一条记录。传统的程序逻辑不考虑多个同名子代。我考虑过创建一个附加元素,该元素由命名的子节点组成,然后提取每个节点的值。这是正确的方法,还是应该处理这种类型的响应?最后,这个响应的格式是否正确?似乎这种结构不适合解析。

<Properties xmlns="urn:Microsoft.Search.Response.Document.Document">
     <Property>
         <Name>USERPROFILE_GUID</Name>
         <Type>String</Type>
         <Value>XXXXX97D-6XX7-XXX9-XX0A-XXXXXF0D5</Value>
     </Property>
     <Property>
         <Name>ACCOUNTNAME</Name>
         <Type>String</Type>
         <Value>APAC\johnny.good</Value>
     </Property>
     <Property>
         <Name>USERNAME</Name>
         <Type>String</Type>
         <Value>johnny.good</Value>
     </Property>
     <Property>
         <Name>PREFERREDNAME</Name>
         <Type>String</Type>
         <Value>Good, Johnny</Value>
     </Property>
     <Property>
         <Name>FIRSTNAME</Name>
         <Type>String</Type>
         <Value>Johnny</Value>
     </Property>
     <Property>
         <Name>LASTNAME</Name>
         <Type>String</Type>
         <Value>Good</Value>
     </Property>
 </Properties>

【问题讨论】:

  • 考虑使用 JAXB 来解组 XML 文档。

标签: java xml parsing response


【解决方案1】:

将元素名称作为值隐藏在&lt;name&gt; 元素中确实很奇怪,因为这违反了XML 的理念。但基本上它是一个格式良好的文件。

我会按照您的建议进行操作:根据您是需要另一个 XML 还是只需要对象中的数据,我将创建一个具有适当元素/属性名称的 xml 元素或 java 对象,并从这些属性中提取值-元素。同名子代很常见,绝不应妨碍解析。

【讨论】:

  • 这或多或少是我的想法。那个 simple-xml.jar 听起来像是一个更好的解决方案。你每天都能学到新东西。
【解决方案2】:
  Use simple-xml.jar library and 
  Create 
  class Properties{
  List<Property> Property;
   }
  Class Property{
  String Name,Value,Type;

   }

【讨论】:

  • 有趣,我从未使用过 simple-xml.jar。从你的 sn-p 看起来很直接。我会仔细看看的。谢谢。
猜你喜欢
  • 2013-11-02
  • 2021-12-29
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-29
  • 2020-07-01
  • 1970-01-01
相关资源
最近更新 更多