Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从XML的特定部分获取元素的值_Xml_Xmlreader - Fatal编程技术网

从XML的特定部分获取元素的值

从XML的特定部分获取元素的值,xml,xmlreader,Xml,Xmlreader,我的XmlReader在XML中查找我正在查找的特定元素。问题是我需要的一个元素存在于XML的两个不同区域。我需要从XML的节而不是节中获取j:RegisterActionDescriptionText值 XML示例: <FilingLeadDocument s:id="DOC00001" s:metadata="# Pages=2"> <nc:DocumentApplicationName>application/pdf</nc:DocumentApp

我的XmlReader在XML中查找我正在查找的特定元素。问题是我需要的一个元素存在于XML的两个不同区域。我需要从XML的节而不是节中获取j:RegisterActionDescriptionText值

XML示例:

  <FilingLeadDocument s:id="DOC00001" s:metadata="# Pages=2">
    <nc:DocumentApplicationName>application/pdf</nc:DocumentApplicationName>
    <nc:DocumentDescriptionText s:id="Notices">Civil Coversheet</nc:DocumentDescriptionText>
    <nc:DocumentFileControlID s:id="FileInputId">101</nc:DocumentFileControlID>
    <nc:DocumentFileControlID s:id="Rule6PublicAnswer">-1</nc:DocumentFileControlID>
    <nc:DocumentFileControlID s:id="Rule6ConfidentialAnswer">-1</nc:DocumentFileControlID>
    <nc:DocumentFileControlID s:id="TypeOfConfidentialDocument">-1</nc:DocumentFileControlID>
    <nc:DocumentPostDate>
      <nc:DateTime>2014-09-02T13:30:51.373476-04:00</nc:DateTime>
    </nc:DocumentPostDate>
    <nc:DocumentReceivedDate>
      <nc:DateTime>2014-09-02T13:30:54.813-04:00</nc:DateTime>
    </nc:DocumentReceivedDate>
    <nc:DocumentSequenceID>1</nc:DocumentSequenceID>
    <ecf:DocumentMetadata>
      <j:RegisterActionDescriptionText s:id="63196854">6721      </j:RegisterActionDescriptionText>
      <ecf:FilingPartyID>
        <nc:IdentificationID>49372</nc:IdentificationID>
        <nc:IdentificationCategoryText>FLEPORTAL</nc:IdentificationCategoryText>
      </ecf:FilingPartyID>
      <ecf:SpecialHandlingInstructions />
    </ecf:DocumentMetadata>
    <ecf:DocumentRendition>
      <ecf:DocumentRenditionMetadata>
        <nc:DocumentApplicationName>application/pdf</nc:DocumentApplicationName>
        <nc:DocumentFileControlID>CCS.pdf</nc:DocumentFileControlID>
        <ecf:DocumentAttachment s:id="ATT00001">
          <nc:BinaryBase64Object>Removed for security purposes</nc:BinaryBase64Object>
          <nc:BinarySizeValue>97426</nc:BinarySizeValue>
          <ecf:AttachmentSequenceID>1</ecf:AttachmentSequenceID>
        </ecf:DocumentAttachment>
      </ecf:DocumentRenditionMetadata>
    </ecf:DocumentRendition>
  </FilingLeadDocument>
  <FilingConnectedDocument s:id="DOC00002" s:metadata="# Pages=1">
    <nc:DocumentApplicationName>application/pdf</nc:DocumentApplicationName>
    <nc:DocumentDescriptionText s:id="Other">Mortgage Claim Amount Worksheet</nc:DocumentDescriptionText>
    <nc:DocumentFileControlID s:id="FileInputId">102</nc:DocumentFileControlID>
    <nc:DocumentFileControlID s:id="Rule6PublicAnswer">-1</nc:DocumentFileControlID>
    <nc:DocumentFileControlID s:id="Rule6ConfidentialAnswer">-1</nc:DocumentFileControlID>
    <nc:DocumentFileControlID s:id="TypeOfConfidentialDocument">-1</nc:DocumentFileControlID>
    <nc:DocumentPostDate>
      <nc:DateTime>2014-09-02T13:30:51.373476-04:00</nc:DateTime>
    </nc:DocumentPostDate>
    <nc:DocumentReceivedDate>
      <nc:DateTime>2014-09-02T13:30:54.813-04:00</nc:DateTime>
    </nc:DocumentReceivedDate>
    <nc:DocumentSequenceID>2</nc:DocumentSequenceID>
    <ecf:DocumentMetadata>
      <j:RegisterActionDescriptionText s:id="63196975">1417      </j:RegisterActionDescriptionText>
      <ecf:FilingPartyID>
        <nc:IdentificationID>49372</nc:IdentificationID>
        <nc:IdentificationCategoryText>FLEPORTAL</nc:IdentificationCategoryText>
      </ecf:FilingPartyID>
    </ecf:DocumentMetadata>
    <ecf:DocumentRendition>
      <ecf:DocumentRenditionMetadata>
        <nc:DocumentApplicationName>application/pdf</nc:DocumentApplicationName>
        <nc:DocumentFileControlID>VRP.pdf</nc:DocumentFileControlID>
        <ecf:DocumentAttachment s:id="ATT00002">
         <nc:BinaryBase64Object>Removed for security purposes</nc:BinaryBase64Object>
         <nc:BinarySizeValue>61900</nc:BinarySizeValue>
          <ecf:AttachmentSequenceID>2</ecf:AttachmentSequenceID>
        </ecf:DocumentAttachment>
      </ecf:DocumentRenditionMetadata>
    </ecf:DocumentRendition>
  </FilingConnectedDocument>



<ecf:ReviewedLeadDocument s:id="REVIEWEDDOC00001">
    <nc:DocumentFiledDate>
      <nc:DateTime>2014-09-03T00:00:00</nc:DateTime>
    </nc:DocumentFiledDate>
    <nc:DocumentPostDate>
      <nc:DateTime>2014-09-02T13:30:51.373</nc:DateTime>
    </nc:DocumentPostDate>
    <nc:DocumentReceivedDate>
      <nc:DateTime>2014-09-02T13:30:54.813</nc:DateTime>
    </nc:DocumentReceivedDate>
    <nc:DocumentSequenceID>1</nc:DocumentSequenceID>
    <nc:DocumentStatus>
      <nc:StatusText>ACCEPTED</nc:StatusText>
    </nc:DocumentStatus>
    <ecf:DocumentMetadata>
      <j:RegisterActionDescriptionText s:id="63196854">5583</j:RegisterActionDescriptionText>
      <ecf:ParentDocumentReference s:ref="DOC00001" />
    </ecf:DocumentMetadata>
    <ecf:DocumentRendition>
      <ecf:DocumentRenditionMetadata s:metadata="2" />
    </ecf:DocumentRendition>
  </ecf:ReviewedLeadDocument>
  <ecf:ReviewedConnectedDocument s:id="REVIEWEDDOC00002">
    <nc:DocumentFiledDate>
      <nc:DateTime>2014-09-03T00:00:00</nc:DateTime>
    </nc:DocumentFiledDate>
    <nc:DocumentPostDate>
      <nc:DateTime>2014-09-02T13:30:51.373</nc:DateTime>
    </nc:DocumentPostDate>
    <nc:DocumentReceivedDate>
      <nc:DateTime>2014-09-02T13:30:54.813</nc:DateTime>
    </nc:DocumentReceivedDate>
    <nc:DocumentSequenceID>2</nc:DocumentSequenceID>
    <nc:DocumentStatus>
      <nc:StatusText>ACCEPTED</nc:StatusText>
    </nc:DocumentStatus>
    <ecf:DocumentMetadata>
      <j:RegisterActionDescriptionText s:id="63196975">10177</j:RegisterActionDescriptionText>
      <ecf:ParentDocumentReference s:ref="DOC00002" />
    </ecf:DocumentMetadata>
    <ecf:DocumentRendition>
      <ecf:DocumentRenditionMetadata s:metadata="1" />
    </ecf:DocumentRendition>
  </ecf:ReviewedConnectedDocument>

第一个建议——用普通的XElement处理取代XmlReader硬编码的单向遍历——这样它将更易于阅读和使用。重新组织代码——这里我们看到IO中的意大利面、硬编码xml处理和GUI更新/读取。格式良好的代码是解决任何问题的第一步,也是主要步骤@ФаГаСаСааааааааа107。这由一个按钮单击事件开始,根据文件名创建一个文件夹,然后从XML中读取特定元素。这是一个目前正在使用的应用程序,我的任务是进行更改。我从来没有这样编码过XElement如何让它变得更好?此外,我还需要ReviewEdleAddDocument和ReviewedConnectedDocument中的j:RegisterActionDescriptionText值,而不是从FilingAddDocument“FilingConnectedDocument”和ReviewEdleAddDocument以及ReviewedConnectedDocument中获取两次。Xelement允许您组织代码并有效地收集所需元素,然后更新您的文件和界面。您发布的代码没有重命名TextBox1和ListBox1,但它是真实的代码,所以您似乎喜欢编写代码,但没有考虑如何组织和规划代码。任何解决方案,即使是很小的解决方案,都有描述数据结构及其关系的模型,这里是BASE64图像和文件名,并且有一些支持结构,这些结构必须实现最大程度的独立性-这里是DeserializerFromXml,正在实现的可以从XML文件构建模型,Base64Storager可以获取模型并将其存储到磁盘,GuiIntermedate可以提供从模型到GUI的桥梁。试着让你的工作更具面向对象性和条理性,使用适当的工具,例如XElement进行反序列化,一切都会好起来的。我对你发布的信息一无所知。我的帖子是关于隔离访问XML的某个部分,而不是复制信息
if (xr.NodeType == XmlNodeType.Element && xr.Name == "j:RegisterActionDescriptionText")
  {
   eventCode = xr.ReadElementString();
    if (eventCode != null)
     {
      lbEventCode.Items.Add(eventCode);
     }
   }