如何检查XML中的空白元素?

时间:2018-09-12 14:33:10

标签: regex xml tags

是否存在正则表达式来检查以下XML的空元素?因此,我想检查是否填充了<ClientRequest>标记下的所有内容?

<Response xmlns="http://Test/Types"> 
 <ClientRequest>
    <Name>TEST</Name>
    <Id><222/Id>
    <Parameters>
      <SID>123456</SID>
    </RequestParams>
    <StartDate>2017-10-13T23:00:01.000+01:00</StartDate>
    <EndDate>2017-10-14T22:59:59.000+01:00</EndDate>
    <URL></URL>
  </ClientRequest>
  <Install/>
  <Types/>
  <LR/>
  <Package/>
  <Services/>
  <Issues/>
  <Complaints/>
</Response>

1 个答案:

答案 0 :(得分:1)

使用XML解析器或XPath(而不是正则表达式)来检查或解析XML。

此XPath,

//*[not(text()) and not(*)]

将选择所有没有 没有文本或元素子元素 的元素。

此XPath,

//*[not(node())]

将选择所有 empty 元素(也不允许添加注释和PI子元素)。

请注意,您的XML格式不正确。这里是带有更正的内容:

<Response xmlns="http://Test/Types"> 
 <ClientRequest>
    <Name>TEST</Name>
    <Id>222</Id>
    <Parameters>
      <SID>123456</SID>
    </Parameters>
    <StartDate>2017-10-13T23:00:01.000+01:00</StartDate>
    <EndDate>2017-10-14T22:59:59.000+01:00</EndDate>
    <URL></URL>
  </ClientRequest>
  <Install/>
  <Types/>
  <LR/>
  <Package/>
  <Services/>
  <Issues/>
  <Complaints/>
</Response>

还要注意,您可以将以上XPath中的任意一个包装在boolean()count()中,以返回指示符或存在的此类填充元素的计数。