【问题标题】:How to check for blank elements in XML?如何检查 XML 中的空白元素?
【发布时间】:2018-09-12 14:33:10
【问题描述】:

是否有正则表达式来检查以下 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>

【问题讨论】:

    标签: regex xml tags


    【解决方案1】:

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

    这个 XPath,

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

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

    这个 XPath,

    //*[not(node())]
    

    将选择所有 元素(也不允许评论和 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() 中,以返回此类填充元素的存在指示符或计数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 2017-02-11
      • 1970-01-01
      相关资源
      最近更新 更多