从XML的特定部分获取元素的值
我的XmlReader在XML中查找我正在查找的特定元素。问题是我需要的一个元素存在于XML的两个不同区域。我需要从XML的节而不是节中获取j:RegisterActionDescriptionText值 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
<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);
}
}