Package.GetPart(Uri) Método

Definición

Devuelve el elemento con un URI especificado.Returns the part with a given URI.

public:
 System::IO::Packaging::PackagePart ^ GetPart(Uri ^ partUri);
public System.IO.Packaging.PackagePart GetPart (Uri partUri);
member this.GetPart : Uri -> System.IO.Packaging.PackagePart
Public Function GetPart (partUri As Uri) As PackagePart

Parámetros

partUri
Uri

Identificador uniforme de recursos (URI) del elemento que se va a devolver.The uniform resource identifier (URI) of the part to return.

Devoluciones

PackagePart

Elemento con el partUri especificado.The part with the specified partUri.

Excepciones

partUri es null.partUri is null.

partUri no es un identificador uniforme de recursos (URI) de PackagePart válido.partUri is not a valid PackagePart uniform resource identifier (URI).

Un elemento con el partUri especificado no está en el paquete.A part with the specified partUri is not in the package.

El paquete no está abierto (se ha llamado a Dispose(Boolean) o Close()).The package is not open (Dispose(Boolean) or Close() has been called).

El paquete es de sólo escritura.The package is write-only.

Ejemplos

En el ejemplo siguiente se muestra cómo buscar, recuperar y leer elementos contenidos en un paquete.The following example shows how to locate, retrieve, and read parts that are contained in a package. Para obtener el ejemplo completo, vea leer un ejemplo de paquete.For the complete sample, see Reading a Package Sample.

// Open the Package.
// ('using' statement insures that 'package' is
//  closed and disposed when it goes out of scope.)
using (Package package =
    Package.Open(packagePath, FileMode.Open, FileAccess.Read))
{
    PackagePart documentPart = null;
    PackagePart resourcePart = null;

    // Get the Package Relationships and look for
    //   the Document part based on the RelationshipType
    Uri uriDocumentTarget = null;
    foreach (PackageRelationship relationship in
        package.GetRelationshipsByType(PackageRelationshipType))
    {
        // Resolve the Relationship Target Uri
        //   so the Document Part can be retrieved.
        uriDocumentTarget = PackUriHelper.ResolvePartUri(
            new Uri("/", UriKind.Relative), relationship.TargetUri);

        // Open the Document Part, write the contents to a file.
        documentPart = package.GetPart(uriDocumentTarget);
        ExtractPart(documentPart, targetDirectory);
    }

    // Get the Document part's Relationships,
    //   and look for required resources.
    Uri uriResourceTarget = null;
    foreach (PackageRelationship relationship in
        documentPart.GetRelationshipsByType(
                                ResourceRelationshipType))
    {
        // Resolve the Relationship Target Uri
        //   so the Resource Part can be retrieved.
        uriResourceTarget = PackUriHelper.ResolvePartUri(
            documentPart.Uri, relationship.TargetUri);

        // Open the Resource Part and write the contents to a file.
        resourcePart = package.GetPart(uriResourceTarget);
        ExtractPart(resourcePart, targetDirectory);
    }
}// end:using(Package package) - Close & dispose package.
' Open the Package.
' ('using' statement insures that 'package' is
'  closed and disposed when it goes out of scope.)
Using package As Package = Package.Open(packagePath, FileMode.Open, FileAccess.Read)
    Dim documentPart As PackagePart = Nothing
    Dim resourcePart As PackagePart = Nothing

    ' Get the Package Relationships and look for
    '   the Document part based on the RelationshipType
    Dim uriDocumentTarget As Uri = Nothing
    For Each relationship As PackageRelationship In package.GetRelationshipsByType(PackageRelationshipType)
        ' Resolve the Relationship Target Uri
        '   so the Document Part can be retrieved.
        uriDocumentTarget = PackUriHelper.ResolvePartUri(New Uri("/", UriKind.Relative), relationship.TargetUri)

        ' Open the Document Part, write the contents to a file.
        documentPart = package.GetPart(uriDocumentTarget)
        ExtractPart(documentPart, targetDirectory)
    Next relationship

    ' Get the Document part's Relationships,
    '   and look for required resources.
    Dim uriResourceTarget As Uri = Nothing
    For Each relationship As PackageRelationship In documentPart.GetRelationshipsByType(ResourceRelationshipType)
        ' Resolve the Relationship Target Uri
        '   so the Resource Part can be retrieved.
        uriResourceTarget = PackUriHelper.ResolvePartUri(documentPart.Uri, relationship.TargetUri)

        ' Open the Resource Part and write the contents to a file.
        resourcePart = package.GetPart(uriResourceTarget)
        ExtractPart(resourcePart, targetDirectory)
    Next relationship

End Using ' end:using(Package package) - Close & dispose package.

Comentarios

InvalidOperationExceptionSe produce una excepción si no existe un elemento con el especificado partUri .An InvalidOperationException is thrown if a part with the specified partUri does not exist.

El PartExists método se puede utilizar para determinar si partUri hace referencia a un elemento existente.The PartExists method can be used to determine whether partUri references an existing part.

De forma predeterminada, ZipPackage Package se proporciona y se usa una implementación derivada de la clase base abstracta.By default, a ZipPackage derived implementation of the abstract Package base class is provided and used. En la operación predeterminada, GetPart llama internamente GetPartCore a la ZipPackage clase para devolver un elemento solicitado desde un archivo zip.In the default operation, GetPart internally calls GetPartCore of the ZipPackage class to return a requested part from a ZIP file.

Para obtener más información, consulte la especificación de convenciones de empaquetado abierto (OPC) disponible para su descarga en https://go.microsoft.com/fwlink/?LinkID=71255 .For additional information, see the Open Packaging Conventions (OPC) specification available for download at https://go.microsoft.com/fwlink/?LinkID=71255.

Notas a los desarrolladores de herederos

GetPart(Uri) llama internamente al método de la clase derivada GetPartCore(Uri) para vaciar realmente el elemento en función del formato físico implementado en la clase derivada. GetPart(Uri) internally calls the derived class GetPartCore(Uri) method to actually flush the part based on the physical format implemented in the derived class.

Se aplica a

Consulte también